T () { while (last != null) { Iterator<? extends T> it = last.iterator(tree); if (it.hasNext()) { T result = it.next(); last = last.add(P1.create(result)); descending = true; if (order != Order.POST) return result; } else { T result = last.node; last = last.remove(); descending = false; if (order != Order.PRE && last != null) return result; } } descending = true; return stop(); }