public final Ix<T> retain(IxPredicate<? super T> predicate) {
        return new IxRetain<T>(this, nullCheck(predicate, "predicate is null"));
    }
public final Ix < T > retain ( IxPredicate < ? super T > predicate ) { return new IxRetain < T > ( this , nullCheck ( predicate , "predicate is null" ) ) ; }
Removes those elements via Iterator.remove() from this sequence that don't match the
given predicate.
<p>
The result's iterator() forwards the calls to remove() to this' Iterator.
@param predicate the function called with the current element and returns false
if that particular element should be removed.
@return the new Ix instance
@throws NullPointerException if predicate is null
@since 1.0
@see #remove(IxPredicate)