@Override
public BlockBuilder<StatementEnd> foreach(final String loopVarName, final MetaClass loopVarType) {
final BlockStatement body = new BlockStatement();
appendCallElement(new DeferredCallElement(new DeferredCallback() {
@Override
public void doDeferred(CallWriter writer, Context context, Statement statement) {
GenUtil.assertIsIterable(statement);
final Variable loopVar = createForEachLoopVar(statement, loopVarName, loopVarType, context);
final String collection = writer.getCallString();