code: public <V> Map<T, V> toMap(Function<? super T, ? extends V> valMapper) {
          return toMap(Function.identity(), valMapper);
      }
docs: Returns a {@link Map} whose keys are elements from this stream 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>
  Returned {@code Map} is guaranteed to be modifiable.
  
  <p>
  For parallel stream the concurrent {@code Map} is created.
  
  @param <V> the output type of the value mapping function
  @param valMapper a mapping function to produce values
  @return a {@code Map} whose keys are elements from this stream and values
  are the result of applying mapping function to the input elements
  @throws IllegalStateException if this stream contains duplicate objects
  (according to {@link Object#equals(Object)})
  @see Collectors#toMap(Function, Function)
  @see Collectors#toConcurrentMap(Function, Function)
  @see #toMap(Function, Function)