Iterator<E> () { Function<? super E, ? extends E> fun = Stateful.copy(generator); return new JBIterator<E>() { E cur = first; @Override public E nextImpl() { E result = cur; if (result == null) return stop(); cur = fun.fun(cur); return result; } }; }