T () { if (guide == null) return stop(); while (last != null) { P<T, ?> top = last; Iterator<? extends T> it = top.iterator(tree); boolean hasNext = it.hasNext(); curResult = null; if (top.node != null || hasNext) { curChild = hasNext ? it.next() : null; curParent = top.node; curChildren = top.itle; curNoChildren = top.empty; guide.guide(this); } if (!hasNext) { last = last.remove(); } if (curResult != null) { return curResult; } } return stop(); }