names().fromString("getIterator")), List.<JCExpression>nil())));
} else {
fields.add(make().VarDef(make().Modifiers(2), names().fromString(iterVar), iterTypeExpr, null));
JCBlock body = make().Block(0l, List.<JCStatement>of(
make().If(make().Binary(JCTree.EQ, makeUnquotedIdent(iterVar), makeNull()),
<BUG>make().Exec(make().Apply(null, makeSelect("this", prevItemVar), List.<JCExpression>nil())),
</BUG>
null),
make().Exec(make().Assign(makeUnquotedIdent(iterVar), make().Apply(null,
make().Select(transformExpression(specexpr.getExpression()),

names().fromString("getIterator")), List.<JCExpression>nil())));
} else {
fields.add(make().VarDef(make().Modifiers(2), names().fromString(iterVar), iterTypeExpr, null));
JCBlock body = make().Block(0l, List.<JCStatement>of(
make().If(make().Binary(JCTree.EQ, makeUnquotedIdent(iterVar), makeNull()),
make().Exec(make().Apply(null, makeSelect("this", ctxtName), List.<JCExpression>nil())),
null),
make().Exec(make().Assign(makeUnquotedIdent(iterVar), make().Apply(null,
make().Select(transformExpression(specexpr.getExpression()),
