+ @Override
+ protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new DeviateStatementImpl(ctx, substatements);
+ }
+
+ @Override
+ protected final DeviateStatement createEmptyDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
+ // This is exceedingly unlikely, just reuse the implementation
+ return createDeclared(ctx, ImmutableList.of());
+ }
+
+ @Override
+ protected final DeviateEffectiveStatement createEffective(
+ final StmtContext<DeviateKind, DeviateStatement, DeviateEffectiveStatement> ctx,
+ final DeviateStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new DeviateEffectiveStatementImpl(declared, substatements);
+ }
+
+ @Override
+ protected final DeviateEffectiveStatement createEmptyEffective(
+ final StmtContext<DeviateKind, DeviateStatement, DeviateEffectiveStatement> ctx,
+ final DeviateStatement declared) {
+ // This is exceedingly unlikely, just reuse the implementation
+ return createEffective(ctx, declared, ImmutableList.of());
+ }
+