code: public static IRForEachStatement makeLoop( TopLevelTransformationContext cc, IRExpression rootExpression, IType type,
                                               Symbol identifier, Symbol indexSymbol )
    {
      return new ForEachStatementTransformer( cc, null )
        .makeLoopImpl( cc, rootExpression, type, identifier, indexSymbol, null );
    }
docs: Helper for creating iterative loops.  Note that after calling this method, you should compile and call
  gw.internal.gosu.ir.nodes.statement.IRForEachStatement#setBody(gw.internal.gosu.ir.nodes.IRStatement) on the
  IRForEachStatement.  Since the body often depends on symbols introduced in the loop, you must usually compile it
  after the loop has been created.  Thus it cannot be an argument to this function.