+ protected YangVersionStatement createDeclared(final StmtContext<YangVersion, YangVersionStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularYangVersionStatement(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected YangVersionStatement createEmptyDeclared(final StmtContext<YangVersion, YangVersionStatement, ?> ctx) {
+ final YangVersion argument = ctx.coerceStatementArgument();
+ switch (argument) {
+ case VERSION_1:
+ return EMPTY_VER1_DECL;
+ case VERSION_1_1:
+ return EMPTY_VER1_1_DECL;
+ default:
+ throw new IllegalStateException("Unhandled version " + argument);
+ }
+ }
+
+ @Override
+ protected YangVersionEffectiveStatement createEffective(
+ final StmtContext<YangVersion, YangVersionStatement, YangVersionEffectiveStatement> ctx,
+ final YangVersionStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularYangVersionEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected YangVersionEffectiveStatement createEmptyEffective(
+ final StmtContext<YangVersion, YangVersionStatement, YangVersionEffectiveStatement> ctx,
+ final YangVersionStatement declared) {
+ if (EMPTY_VER1_DECL.equals(declared)) {
+ return EMPTY_VER1_EFF;
+ } else if (EMPTY_VER1_1_DECL.equals(declared)) {
+ return EMPTY_VER1_1_EFF;
+ } else {
+ return new EmptyYangVersionEffectiveStatement(declared);
+ }