code: public <K, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends K> keyMapper,
              Function<? super T, ? extends V> valMapper, BinaryOperator<V> mergeFunction) {
          return rawCollect(Collectors.toMap(keyMapper, valMapper, mergeFunction, TreeMap::new));
      }
docs: Returns a {@link SortedMap} whose keys and values are the result of
  applying the provided mapping functions to the input elements.
  
  <p>
  This is a <a href="package-summary.html#StreamOps">terminal</a>
  operation.
  
  <p>
  If the mapped keys contains duplicates (according to
  {@link Object#equals(Object)}), the value mapping function is applied to
  each equal element, and the results are merged using the provided merging
  function.
  
  <p>
  Returned {@code SortedMap} is guaranteed to be modifiable.
  
  @param <K> the output type of the key mapping function
  @param <V> the output type of the value mapping function
  @param keyMapper a mapping function to produce keys
  @param valMapper a mapping function to produce values
  @param mergeFunction a merge function, used to resolve collisions between
  values associated with the same key, as supplied to
  {@link Map#merge(Object, Object, BiFunction)}
  @return a {@code SortedMap} whose keys are the result of applying a key
  mapping function to the input elements, and whose values are the
  result of applying a value mapping function to all input elements
  equal to the key and combining them using the merge function
  
  @see Collectors#toMap(Function, Function, BinaryOperator)
  @see #toSortedMap(Function, Function)
  @see #toNavigableMap(Function, Function, BinaryOperator)
  @since 0.1.0