'Treat next element as a single node even if it\'s a subtree.
This is used instead of next() when the result has to be a
tree root node.  Also prevents us from duplicating recently-added
children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration
must dup the type node, but ID has been added.
Referencing a rule result twice is ok; dup entire tree as
we can\'t be adding trees as root; e.g., expr expr.
Hideous code duplication here with super.next().  Can\'t think of
a proper way to refactor.  This needs to always call dup node
and super.next() doesn\'t know which to call: dup node or dup tree.'

def nextNode(self):

    if (self.dirty or ((self.cursor >= len(self)) and (len(self) == 1))):
        el = self._next()
        return self.adaptor.dupNode(el)
    el = self._next()
    return el
