- StmtContext.Mutable<?, ?, ?> getRoot();
-
- ModelActionBuilder newInferenceAction(ModelProcessingPhase phase);
-
- <K, KT extends K, N extends StatementNamespace<K, ?, ?>> void addContext(
- Class<N> namespace, KT key, StmtContext<?, ?, ?> stmt);
-
- void setSupportedByFeatures(boolean isSupported);
+ Mutable<?, ?, ?> getRoot();
+
+ @Nonnull
+ Collection<? extends Mutable<?, ?, ?>> mutableDeclaredSubstatements();
+
+ @Nonnull
+ Collection<? extends Mutable<?, ?, ?>> mutableEffectiveSubstatements();
+
+ /**
+ * Create a new inference action to be executed during specified phase. The action cannot be cancelled
+ * and will be executed even if its definition remains incomplete.
+ *
+ * @param phase Target phase in which the action will resolved.
+ * @return A new action builder.
+ * @throws NullPointerException if the specified phase is null
+ */
+ @Nonnull ModelActionBuilder newInferenceAction(@Nonnull ModelProcessingPhase phase);
+
+ /**
+ * adds statement to namespace map with the key
+ *
+ * @param namespace
+ * {@link StatementNamespace} child that determines namespace to be added to
+ * @param key
+ * of type according to namespace class specification
+ * @param stmt
+ * to be added to namespace map
+ */
+ <K, KT extends K, N extends StatementNamespace<K, ?, ?>> void addContext(Class<N> namespace, KT key,
+ StmtContext<?, ?, ?> stmt);
+
+ /**
+ * Set version of root statement context.
+ *
+ * @param version
+ * of root statement context
+ */
+ void setRootVersion(YangVersion version);
+
+ /**
+ * Add mutable statement to seal. Each mutable statement must be sealed
+ * as the last step of statement parser processing.
+ *
+ * @param mutableStatement
+ * mutable statement which should be sealed
+ */
+ void addMutableStmtToSeal(MutableStatement mutableStatement);
+
+ /**
+ * Add required module. Based on these dependencies are collected
+ * required sources from library sources.
+ *
+ * @param dependency
+ * ModuleIdentifier of module required by current root
+ * context
+ */
+ void addRequiredModule(ModuleIdentifier dependency);
+
+ void addAsEffectOfStatement(StmtContext<?, ?, ?> ctx);
+
+ void addAsEffectOfStatement(Collection<? extends StmtContext<?, ?, ?>> ctxs);
+
+ /**
+ * Set identifier of current root context.
+ *
+ * @param identifier
+ * of current root context
+ */
+ void setRootIdentifier(ModuleIdentifier identifier);
+
+ void setIsSupportedToBuildEffective(boolean isSupportedToBuild);
+
+ // FIXME: this seems to be unused, but looks useful.
+ void setCompletedPhase(ModelProcessingPhase completedPhase);