public Iterator iterator()

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;
                }
            };
        }