@Override
    public ListIterator<SpanNode> childIteratorRecursive() {
        return new InvalidatingIterator(this, new RecursiveNodeIterator(children().listIterator()));
    }
Recursively traverses all children (not only leaf nodes) of this SpanList, in a depth-first fashion.
The ListIterator only supports iteration forwards, and the optional operations that are implemented are
remove() and set(). add() is not supported.

@return a ListIterator which recursively traverses all children and their children etc. of this SpanList.
@see java.util.ListIterator
document/src/main/java/com/yahoo/document/annotation/SpanList.java