@Override
    @SuppressWarnings("unchecked")
    Iterator<Annotation> iteratorRecursive(SpanNode node) {
        IdentityHashMap<SpanNode, SpanNode> nodes = new IdentityHashMap<SpanNode, SpanNode>();
        nodes.put(node, node);
        {
            Iterator<SpanNode> childrenIt = node.childIteratorRecursive();
            while (childrenIt.hasNext()) {
                SpanNode child = childrenIt.next();
                nodes.put(child, child);
            }
        }
        List<Collection<Annotation>> annotationLists = new ArrayList<Collection<Annotation>>(nodes.size());
        for (SpanNode includedNode : nodes.keySet()) {
            Collection<Annotation> includedAnnotations = spanNode2Annotation.get(includedNode);
            if (includedAnnotations != null) {
                annotationLists.add(includedAnnotations);
            }
        }
        return new AnnotationCollectionIterator(annotationLists);
    }
TODO: Should this be removed?

@author Einar M R Rosenvinge
document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java