in core/src/main/java/org/apache/commons/functor/core/collection/FilteredIterable.java [106:117]
public FilteredIterable<T> retain(Predicate<? super T> filter) {
if (filter == null) {
throw new NullPointerException("filtering predicate was null");
}
synchronized (this) {
if (this.predicate == null) {
this.predicate = new And<T>();
}
this.predicate.and(filter);
}
return this;
}