public static <T> Collector<T, ?, List<T>> filtering(Predicate<? super T> predicate) {
        final Collector<? super T, ?, List<T>> downstream = Collectors.toList();

        return filtering(predicate, downstream);
    }
public static < T > Collector < T , ? , List < T > > filtering ( Predicate < ? super T > predicate ) { final Collector < ? super T , ? , List < T > > downstream = Collectors . toList ( ) ; return filtering ( predicate , downstream ) ; }
It's copied from StreamEx: https://github.com/amaembo/streamex under Apache License v2 and may be modified.
<br />

Returns a {@code Collector} which filters input elements by the supplied
predicate, collecting them to the list.

<p>
This method behaves like
{@code filtering(predicate, Collectors.toList())}.

<p>
There are no guarantees on the type, mutability, serializability, or
thread-safety of the {@code List} returned.

@param <T> the type of the input elements
@param predicate a filter function to be applied to the input elements
@return a collector which applies the predicate to the input elements and
collects the elements for which predicate returned true to the
{@code List}
@see #filtering(Predicate, Collector)
@since 0.6.0