+ @Override
+ protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new DeviateStatementImpl(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(), 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 DeviateEffectiveStatement createEffective(final Current<DeviateKind, DeviateStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new DeviateEffectiveStatementImpl(stmt.declared(), substatements);
+ }
+