while ((node = lastChild(current = node)) != NULL) { } _node = current;
while ((node = lastChild(current = node)) != NULL) { }  _node = current - skip;
	public NodeIterator setStartNode(int node) {	    if (_isRestartable) {		if (node >= _firstAttributeNode) {		    node = _parent[node];		    int child = _offsetOrChild[node];		    if (child != NULL) node = child;		}		_startNode = node;		// find rightmost descendant (or self)		int current;		while ((node = lastChild(current = node)) != NULL) {		}		_node = current;		// _node precedes possible following(node) nodes		return resetPosition();	    }	    return this;	}