code: public final Stream<T> filter(final Predicate<? super T> predicate, final int parallelism) {
          synchronized (this.state) {
              checkState();
              return new FilterStream<T>(this, parallelism, predicate);
          }
      }
docs: Intermediate operation returning a Stream with only the elements of this Stream that
  satisfy the specified predicate. If {@code parallelism > 1}, up to {@code parallelism}
  evaluations of the predicate are simultaneously performed in background threads for greater
  throughput.
  
  @param predicate
  the predicate, never called with a null input
  @param parallelism
  the parallelism degree, i.e., the maximum number of predicate evaluations that
  can be performed in parallel (if <= 1 no parallel evaluation will be performed)
  @return a Stream over the elements satisfying the predicate