void () { current.remove(); // if our next move was to go down, we can't. // we can go along, or up. descending = null; if (current.hasNext() || ascending != null) { // we have a next element, or our next move was up anyway. return; } // our next move was going to be down, or accross, but those are not // possible any more, need to check up. // our next will be up. while (ssize > 0) { @SuppressWarnings("unchecked") final Iterator<Content> subit = (Iterator<Content>)stack[--ssize]; stack[ssize] = null; ascending = subit; if (ascending.hasNext()) { return; } } ascending = null; hasnext = false; }