// iterate safely (& quickly) in the face of concurrent modifications static IterableIterator concurrentlyIterateList(final L l) { ret iteratorFromFunction(new F0() { int i; A get() { synchronized(l) { ret _get(l, i++); } } }); }