generator: dry up ForXStatements and *Statements
break up let scoping