in processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java [71:110]
public Iterator<CHILD> iterator() {
final Iterator<PARENT> parentIterator = parents.iterator();
return new Iterator<CHILD>() {
private Iterator<CHILD> children = nextChildren();
@Override
public synchronized boolean hasNext() {
return children != null;
}
@Override
public synchronized CHILD next() {
if (children == null) {
throw new NoSuchElementException();
}
try {
return children.next();
} finally {
if (!children.hasNext()) {
children = nextChildren();
}
}
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
private Iterator<CHILD> nextChildren() {
while (parentIterator.hasNext()) {
final Iterator<CHILD> prospect = childrenOf(parentIterator.next()).iterator();
if (prospect.hasNext()) {
return prospect;
}
}
return null;
}
};
}