static Steppable steppable_forEach(Iterable items, VF1 f) { ret steppable_forEach(items, (O) f); } static Steppable steppable_forEach(Iterable items, IVF1 f) { ret steppable_forEach(items, (O) f); } static Steppable steppable_forEach(Iterable items, O f) { ret new Steppable { Iterator it = iterator(items); public bool step() { // return false if done if (!it.hasNext()) false; callF(f, it.next()); true; } }; }