public ConcurrentNavigableMap<K, V> toConcurrentNavigableMap(BinaryOperator<V> mergeFunction) {
        requireNonNull(mergeFunction);
        return inner.collect(Collectors.toConcurrentMap(
            Map.Entry::getKey,
            Map.Entry::getValue,
            mergeFunction,
            ConcurrentSkipListMap::new
        ));
    }
Accumulates all key-value pairs of this {@code MapStream} into a 
{@code ConcurrentNavigableMap}.
<p>
If the mapped keys contains duplicates (according to 
{@link Object#equals(Object)}), the values 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 toConcurrentNavigableMap} 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 ConcurrentNavigableMap} whose keys and 
                      values are identical to the entries of this stream 
                      with any collisions handled
@throws NullPointerException if any of the provided parameters are {@code null}

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