Centralize must contraint definitions 17/86017/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Nov 2019 14:11:16 +0000 (15:11 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 27 Nov 2019 08:41:15 +0000 (09:41 +0100)
A number of statemnts can contain must expressions, which we are
tracking separately in each class. This adds common superclasses
to hold the common definition, reducing the amount of duplication.

JIRA: YANGTOOLS-1040
Change-Id: Id5733b62838f484350094456452c7a1d0039f3f2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 0d63e62a11945ade7371bb4667cf65409336f54c)

yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java [new file with mode: 0644]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java [new file with mode: 0644]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java

index 5965c5e31369c744d00a1123e87c683546f978b2..8c90c56ddc311cf47bb29c659c9a4e9fb4a4922e 100644 (file)
@@ -7,28 +7,17 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
 
-import com.google.common.collect.ImmutableSet;
-import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 public abstract class AbstractEffectiveContainerSchemaNode<D extends DeclaredStatement<QName>>
-        extends AbstractEffectiveSimpleDataNodeContainer<D>
+        extends AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer<D>
         implements ContainerSchemaNode, ActionNodeContainerCompat<QName, D>, NotificationNodeContainerCompat<QName, D> {
-    private final ImmutableSet<MustDefinition> mustConstraints;
-
     protected AbstractEffectiveContainerSchemaNode(final StmtContext<QName, D, ?> ctx) {
         super(ctx);
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
-    }
-
-    @Override
-    public final Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
     }
 }
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java
new file mode 100644 (file)
index 0000000..794a7fa
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableSet;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.MustConstraintAware;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+
+@Beta
+public abstract class AbstractEffectiveMustConstraintAwareDataSchemaNode<D extends DeclaredStatement<QName>>
+        extends AbstractEffectiveDataSchemaNode<D> implements MustConstraintAware {
+    private final @NonNull ImmutableSet<MustDefinition> mustConstraints;
+
+    protected AbstractEffectiveMustConstraintAwareDataSchemaNode(final StmtContext<QName, D, ?> ctx) {
+        super(ctx);
+        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
+    }
+
+    @Override
+    public final ImmutableSet<MustDefinition> getMustConstraints() {
+        return mustConstraints;
+    }
+}
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java
new file mode 100644 (file)
index 0000000..8b77221
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableSet;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.MustConstraintAware;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+
+@Beta
+public abstract class AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer<D extends DeclaredStatement<QName>>
+        extends AbstractEffectiveSimpleDataNodeContainer<D> implements MustConstraintAware {
+    private final @NonNull ImmutableSet<MustDefinition> mustConstraints;
+
+    protected AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer(final StmtContext<QName, D, ?> ctx) {
+        super(ctx);
+        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
+    }
+
+    @Override
+    public final ImmutableSet<MustDefinition> getMustConstraints() {
+        return mustConstraints;
+    }
+}
index 06fa4a5104949dfd9b500ebdbc41a5edd6ae02ef..2e80a7a5ac2505af69cfe09bda05b6dcb74baa89 100644 (file)
@@ -9,30 +9,26 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anydata;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableSet;
-import java.util.Collection;
 import java.util.Objects;
 import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryEffectiveStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 /**
  * YANG 1.1 AnyData effective statement implementation.
  */
 @Beta
-final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<AnydataStatement>
+final class AnydataEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode<AnydataStatement>
         implements AnydataEffectiveStatement, AnyDataSchemaNode, DerivableSchemaNode {
 
-    private final ImmutableSet<MustDefinition> mustConstraints;
     private final AnyDataSchemaNode original;
     private final ContainerSchemaNode schema;
     private final boolean mandatory;
@@ -43,7 +39,6 @@ final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod
         this.original = (AnyDataSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null);
         mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE)
                 .booleanValue();
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
 
         /*
          * :TODO we need to determine a way how to set schema of AnyData
@@ -66,11 +61,6 @@ final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod
         return mandatory;
     }
 
-    @Override
-    public Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
-    }
-
     @Override
     public int hashCode() {
         return Objects.hash(getQName(),getPath());
index 9c19925cf41d5fcdb293939624432e000c1f7605..2799961220fc79177ce75ead55de510407d32f38 100644 (file)
@@ -7,18 +7,15 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anyxml;
 
-import com.google.common.collect.ImmutableSet;
-import java.util.Collection;
 import java.util.Objects;
 import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryEffectiveStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 /**
@@ -28,10 +25,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
  */
 // FIXME: 4.0.0: hide this class and make it final
 @Deprecated
-public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<AnyxmlStatement>
+public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode<AnyxmlStatement>
         implements AnyxmlEffectiveStatement, AnyXmlSchemaNode, DerivableSchemaNode {
 
-    private final ImmutableSet<MustDefinition> mustConstraints;
     private final AnyXmlSchemaNode original;
     private final boolean mandatory;
 
@@ -40,7 +36,6 @@ public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod
         this.original = (AnyXmlSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null);
         mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE)
                 .booleanValue();
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
     }
 
     @Override
@@ -48,11 +43,6 @@ public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod
         return mandatory;
     }
 
-    @Override
-    public Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
-    }
-
     @Override
     public Optional<AnyXmlSchemaNode> getOriginal() {
         return Optional.ofNullable(original);
index 60c810cc54bbbb5cd550c29dcf17f3cca97ce076..bd51b0ac6d090af1fad0509d68722858cc55b07c 100644 (file)
@@ -7,14 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf;
 
-import com.google.common.collect.ImmutableSet;
-import java.util.Collection;
 import java.util.Objects;
 import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
@@ -28,7 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypeBuilder;
 import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypes;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
@@ -40,9 +37,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
  */
 // FIXME: 4.0.0: hide this class
 @Deprecated
-public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<LeafStatement>
+public final class LeafEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode<LeafStatement>
         implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode {
-    private final ImmutableSet<MustDefinition> mustConstraints;
     private final LeafSchemaNode original;
     private final TypeDefinition<?> type;
     private final String defaultStr;
@@ -87,7 +83,6 @@ public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchem
         type = builder.build();
         mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE)
                 .booleanValue();
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
     }
 
     @Override
@@ -105,11 +100,6 @@ public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchem
         return type;
     }
 
-    @Override
-    public Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
index e501858dc84daf1b43ffba37edb4e8bb9ec5e201..b4fdaf007998d162adc4d550f54f056f19d1b2e5 100644 (file)
@@ -16,7 +16,6 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
@@ -30,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypeBuilder;
 import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypes;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
@@ -42,7 +41,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
  */
 // FIXME: 4.0.0: hide this class
 @Deprecated
-public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<LeafListStatement>
+public final class LeafListEffectiveStatementImpl
+        extends AbstractEffectiveMustConstraintAwareDataSchemaNode<LeafListStatement>
         implements LeafListEffectiveStatement, LeafListSchemaNode, DerivableSchemaNode {
 
     private static final String ORDER_BY_USER_KEYWORD = "user";
@@ -51,7 +51,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS
     private final LeafListSchemaNode original;
     private final boolean userOrdered;
     private final @NonNull ImmutableSet<String> defaultValues;
-    private final ImmutableSet<MustDefinition> mustConstraints;
     private final ElementCountConstraint elementCountConstraint;
 
     LeafListEffectiveStatementImpl(
@@ -98,7 +97,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS
         type = builder.build();
         userOrdered = isUserOrdered;
         elementCountConstraint = EffectiveStmtUtils.createElementCountConstraint(this).orElse(null);
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
     }
 
     @Override
@@ -126,11 +124,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS
         return Optional.ofNullable(elementCountConstraint);
     }
 
-    @Override
-    public Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
index 99cc824917a528702376fc45a2829ddf797facc6..521c76d74f29e561c0dd09921e9e6faf10c0f879 100644 (file)
@@ -24,7 +24,6 @@ import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -35,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatemen
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveSimpleDataNodeContainer;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -47,7 +46,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
  */
 // FIXME: 4.0.0: hide this class
 @Deprecated
-public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDataNodeContainer<ListStatement>
+public final class ListEffectiveStatementImpl
+        extends AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer<ListStatement>
         implements ListEffectiveStatement, ListSchemaNode, DerivableSchemaNode,
             ActionNodeContainerCompat<QName, ListStatement>, NotificationNodeContainerCompat<QName, ListStatement> {
     private static final String ORDER_BY_USER_KEYWORD = "user";
@@ -59,7 +59,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat
     private final @NonNull ImmutableSet<NotificationDefinition> notifications;
     private final @NonNull ImmutableList<UniqueConstraint> uniqueConstraints;
     private final ElementCountConstraint elementCountConstraint;
-    private final ImmutableSet<MustDefinition> mustConstraints;
 
     ListEffectiveStatementImpl(
             final StmtContext<QName, ListStatement, EffectiveStatement<QName, ListStatement>> ctx) {
@@ -113,7 +112,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat
         this.actions = actionsBuilder.build();
         this.notifications = notificationsBuilder.build();
         elementCountConstraint = EffectiveStmtUtils.createElementCountConstraint(this).orElse(null);
-        mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
     }
 
     @Override
@@ -151,11 +149,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat
         return Optional.ofNullable(elementCountConstraint);
     }
 
-    @Override
-    public Collection<MustDefinition> getMustConstraints() {
-        return mustConstraints;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;