code: public <K, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends K> keyMapper,
              Function<? super T, ? extends V> valMapper) {
          SortedMap<K, V> map = isParallel() ? new ConcurrentSkipListMap<>() : new TreeMap<>();
          return toMapThrowing(keyMapper, valMapper, map);
      }
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)}), an {@code IllegalStateException} is
  thrown when the collection operation is performed.
  
  <p>
  For parallel stream the concurrent {@code SortedMap} is created.
  
  <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
  @return a {@code SortedMap} whose keys and values are the result of
  applying mapping functions to the input elements
  
  @see Collectors#toMap(Function, Function)
  @see Collectors#toConcurrentMap(Function, Function)
  @see #toSortedMap(Function)
  @see #toNavigableMap(Function, Function)
  @since 0.1.0