T () { while (last != null) { P1<T> top = last; if (top.iterator(tree).hasNext() && !top.empty) { T child = top.iterator(tree).next(); last = last.add(P1.create(child)); } else { last = last.remove(); if (top.empty) return last == null ? stop() : top.node; } } return stop(); }