static Iterator chainIterators(Collection> l) { final L _l = new LinkedList(l); ret iteratorFromFunction(func { while (nempty(_l)) { if (first(_l).hasNext()) ret first(_l).next(); _l.remove(0); } null; }); }