docs: public Iterator childNodes() {
          return new Iterator() {
              private final Iterator iter = Node.this.children.iterator();
              private Object nextElementNodes = getNextElementNodes();
  
              public boolean hasNext() {
                  return this.nextElementNodes != null;
              }
  
              public Object next() {
                  try {
                      return this.nextElementNodes;
                  } finally {
                      this.nextElementNodes = getNextElementNodes();
                  }
              }
  
              public void remove() {
                  throw new UnsupportedOperationException();
              }
  
              private Object getNextElementNodes() {
                  while (iter.hasNext()) {
                      final Object node = iter.next();
                      if (node instanceof Node) {
                          return node;
                      }
                  }
                  return null;
              }
          };
      }