code: 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);
      }
docs: 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