T () { if (cur != null && cur.hasNext()) return cur.next(); if (!original.hasNext()) return stop(); Iterable<? extends T> next = function.fun(original.next()); cur = next == null ? null : next.iterator(); return skip(); }