code: public Map<K, V> toMap(BinaryOperator<V> mergeFunction) {
          Function<Entry<K, V>, K> keyMapper = Entry::getKey;
          Function<Entry<K, V>, V> valueMapper = Entry::getValue;
          return collect(Collectors.toMap(keyMapper, valueMapper, mergeFunction, HashMap::new));
      }
docs: Returns a {@link Map} containing the elements of this stream. There are
  no guarantees on the type or serializability of the {@code Map} returned;
  if more control over the returned {@code Map} is required, use
  {@link #toCustomMap(BinaryOperator, Supplier)}.
  
  <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>
  This is a <a href="package-summary.html#StreamOps">terminal</a>
  operation.
  
  <p>
  Returned {@code Map} is guaranteed to be modifiable.
  
  @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 Map} containing the elements of this stream
  @see Collectors#toMap(Function, Function)
  @see Collectors#toConcurrentMap(Function, Function)
  @since 0.1.0