code: public final <R> Stream<R> transform(final Function<? super T, ? extends R> function,
              final int parallelism) {
          synchronized (this.state) {
              checkState();
              return new TransformElementStream<T, R>(this, parallelism, function);
          }
      }
docs: Intermediate operation returning a Stream with the elements obtained from the ones of this
  Stream by applying the specified transformation function. Method
  {@link Function#apply(Object)} is called to transform each input element into an output
  element. If {@code parallelism > 1}, up to {@code parallelism} evaluations of the function
  are simultaneously performed in background threads for greater throughput. Note that the
  function is never called with a null input; in case it returns a null output, it is ignored
  and iteration moves to the next element (this feature can be used to combine filtering with
  transformation).
  
  @param function
  the function, not null
  @param parallelism
  the parallelism degree, i.e., the maximum number of function evaluations that
  can be performed in parallel (if <= 1 no parallel evaluation will be performed)
  @param <R>
  the type of transformed elements
  @return a Stream over the transformed elements