in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/XMLUtil.java [201:247]
public static Iterable<Element> childrenElementsOf(final Node parent) {
return new Iterable<Element>() {
public Iterator<Element> iterator() {
return new ElementIterator();
}
class ElementIterator implements Iterator<Element> {
private Node continueFrom;
private Element curNode;
ElementIterator() {
continueFrom = parent.getFirstChild();
fetch();
}
public boolean hasNext() {
return curNode != null;
}
public Element next() {
Element res = curNode;
fetch();
return res;
}
public void remove() {
throw new UnsupportedOperationException("remove");
}
private void fetch() {
while (!(continueFrom == null
|| continueFrom instanceof Element)) {
continueFrom = continueFrom.getNextSibling();
}
if (continueFrom != null) {
curNode = (Element) continueFrom;
continueFrom = curNode.getNextSibling();
} else {
curNode = null;
}
}
}
};
}