in reply to Re^15: Why does each() always re-evaluate its argument? ("for_list" )in thread Why does each() always re-evaluate its argument?
Discounting the magic and the code for HV_ITERNEXT_WANTPLACEHOLDERS, that still leaves 20 lines of code.