code: @NotNull
      public static <T, R1, R2, R> Collector<T, ?, R> teeing(
              @NotNull final Collector<? super T, ?, R1> downstream1,
              @NotNull final Collector<? super T, ?, R2> downstream2,
              @NotNull final BiFunction<? super R1, ? super R2, R> merger) {
          return teeingImpl(downstream1, downstream2, merger);
      }
docs: Returns a {@code Collector} that composites two collectors.
  Each element is processed by two specified collectors,
  then their results are merged using the merge function into the final result.
  
  @param <T> the type of the input elements
  @param <R1> the result type of the first collector
  @param <R2> the result type of the second collector
  @param <R> the type of the final result
  @param downstream1  the first collector
  @param downstream2  the second collector
  @param merger  the function which merges two results into the single one
  @return a {@code Collector}
  @since 1.2.2