static SplittableSteppable splittableSteppable_forEach(final Iterable items, final VF1 f) { ret new SplittableSteppable { Iterator it = iterator(items); public bool step() { // return false if done if (!it.hasNext()) false; callF(f, it.next()); true; } // invalidates original steppable public L split(int n) { final Lock lock = lock(); ret rep((Steppable) new Steppable { public bool step() { A a; { lock lock; if (!it.hasNext()) false; a = it.next(); } callF(f, a); true; } }, n); } }; }