Allow derived context to be reused
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / AbstractDeclaredEffectiveStatement.java
index b081d983ab6a2692bd66bd8a0ce710ba0c835048..dcf3d843fdcf6c842b643f346e2aa08bf32052af 100644 (file)
@@ -125,6 +125,10 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
             this.declared = requireNonNull(declared);
         }
 
+        protected Default(final Default<A, D> original) {
+            this.declared = original.declared;
+        }
+
         @Override
         public final D getDeclared() {
             return declared;
@@ -193,6 +197,11 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
                 this.substatements = maskList(substatements);
             }
 
+            protected WithSubstatements(final WithSubstatements<A, D> original) {
+                super(original);
+                this.substatements = original.substatements;
+            }
+
             @Override
             public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
                 return unmaskList(substatements);
@@ -203,6 +212,10 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
             super(declared);
         }
 
+        protected DefaultArgument(final DefaultArgument<A, D> original) {
+            super(original);
+        }
+
         @Override
         public final A argument() {
             return getDeclared().argument();
@@ -265,6 +278,11 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
                 this.substatements = maskList(substatements);
             }
 
+            protected WithSubstatements(final WithSubstatements<A, D, E> original) {
+                super(original);
+                this.substatements = original.substatements;
+            }
+
             @Override
             public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
                 return unmaskList(substatements);
@@ -280,6 +298,11 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
             this.schemaTree = ImmutableMap.copyOf(createSchemaTreeNamespace(substatements));
         }
 
+        protected DefaultWithSchemaTree(final DefaultWithSchemaTree<A, D, E> original) {
+            this.declared = original.declared;
+            this.schemaTree = original.schemaTree;
+        }
+
         @Override
         public final D getDeclared() {
             return declared;
@@ -311,6 +334,11 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
                 this.substatements = maskList(substatements);
             }
 
+            protected WithSubstatements(final WithSubstatements<A, D, E> original) {
+                super(original);
+                this.substatements = original.substatements;
+            }
+
             @Override
             public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
                 return unmaskList(substatements);
@@ -329,6 +357,12 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
             this.dataTree = createDataTreeNamespace(schema.values(), schemaTree);
         }
 
+        protected DefaultWithDataTree(final DefaultWithDataTree<A, D, E> original) {
+            this.declared = original.declared;
+            this.schemaTree = original.schemaTree;
+            this.dataTree = original.dataTree;
+        }
+
         @Override
         public final D getDeclared() {
             return declared;