in src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java [2058:2092]
public static <TSource> Enumerable<TSource> where(
final Enumerable<TSource> source,
final Predicate2<TSource, Integer> predicate) {
return new AbstractEnumerable<TSource>() {
public Enumerator<TSource> enumerator() {
return new Enumerator<TSource>() {
final Enumerator<TSource> enumerator = source.enumerator();
int n = -1;
public TSource current() {
return enumerator.current();
}
public boolean moveNext() {
while (enumerator.moveNext()) {
++n;
if (predicate.apply(enumerator.current(), n)) {
return true;
}
}
return false;
}
public void reset() {
enumerator.reset();
n = -1;
}
public void close() {
enumerator.close();
}
};
}
};
}