in src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java [1372:1402]
public static <TSource, TResult> Enumerable<TResult> select(
final Enumerable<TSource> source,
final Function1<TSource, TResult> selector) {
if (selector == Functions.identitySelector()) {
//noinspection unchecked
return (Enumerable<TResult>) source;
}
return new AbstractEnumerable<TResult>() {
public Enumerator<TResult> enumerator() {
return new Enumerator<TResult>() {
final Enumerator<TSource> enumerator = source.enumerator();
public TResult current() {
return selector.apply(enumerator.current());
}
public boolean moveNext() {
return enumerator.moveNext();
}
public void reset() {
enumerator.reset();
}
public void close() {
enumerator.close();
}
};
}
};
}