protected EffectiveStatementBase(final StmtContext<A, D, ?> ctx) {
final Collection<? extends StmtContext<?, ?, ?>> effectiveSubstatements = ctx.effectiveSubstatements();
final Collection<StmtContext<?, ?, ?>> substatementsInit = new ArrayList<>();
final Collection<? extends StmtContext<?, ?, ?>> supportedDeclaredSubStmts = Collections2.filter(
ctx.declaredSubstatements(), StmtContext::isSupportedByFeatures);
for (final StmtContext<?, ?, ?> declaredSubstatement : supportedDeclaredSubStmts) {
if (YangStmtMapping.USES == declaredSubstatement.getPublicDefinition()) {
substatementsInit.add(declaredSubstatement);
substatementsInit.addAll(declaredSubstatement.getEffectOfStatement());
((StatementContextBase<?, ?, ?>) ctx).removeStatementsFromEffectiveSubstatements(declaredSubstatement
.getEffectOfStatement());
} else {
substatementsInit.add(declaredSubstatement);
}
}
substatementsInit.addAll(effectiveSubstatements);
this.substatements = ImmutableList.copyOf(initSubstatements(substatementsInit));
}