public Map<K, V> toConcurrentMap(BinaryOperator<V> mergeFunction) {
        requireNonNull(mergeFunction);
        return inner.collect(Collectors.toConcurrentMap(
            Map.Entry::getKey,
            Map.Entry::getValue,
            mergeFunction
        ));
    }
Accumulates all key-value pairs of this {@code MapStream} into a 
{@code ConcurrentMap}.
<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>
There are multiple ways to deal with collisions between multiple elements
mapping to the same key.  The other forms of {@code toConcurrentMap} simply use
a merge function that throws unconditionally, but you can easily write
more flexible merge policies.

@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 ConcurrentMap} whose keys are taken from this stream
@throws NullPointerException if any of the provided parameters are {@code null}

@see #toConcurrentMap()
@see #toMap(BinaryOperator)
common-parent/mapstream/src/main/java/com/speedment/common/mapstream/MapStream.java