in src/main/java/net/hydromatic/linq4j/Linq4j.java [477:510]
public Enumerator<E> enumerator() {
return new Enumerator<E>() {
// Never null.
Enumerator<E> current = emptyEnumerator();
public E current() {
return current.current();
}
public boolean moveNext() {
for (;;) {
if (current.moveNext()) {
return true;
}
current.close();
if (!enumerableEnumerator.moveNext()) {
current = emptyEnumerator();
return false;
}
current = enumerableEnumerator.current().enumerator();
}
}
public void reset() {
enumerableEnumerator.reset();
current = emptyEnumerator();
}
public void close() {
current.close();
current = emptyEnumerator();
}
};
}