@Override
    public Optional<Map.Entry<K, V>> reduce(BinaryOperator<Map.Entry<K, V>> accumulator) {
        return inner.reduce(requireNonNull(accumulator));
    }
Performs a reduction on the elements of this stream, using an associative 
accumulation function, and returns an {@code Optional} describing the 
reduced value, if any. This is equivalent to:
<pre>{@code
    boolean foundAny = false;
    T result = null;
    for (T element : this stream) {
        if (!foundAny) {
            foundAny = true;
            result = element;
        }
        else
            result = accumulator.apply(result, element);
    }
    return foundAny ? Optional.of(result) : Optional.empty();
}</pre>

but is not constrained to execute sequentially.
<p>
The {@code accumulator} function must be an associative function.
<p>
This is a terminal operation.

@param accumulator  an associative, non-interfering, stateless function 
                    for combining two values
@return             an {@link Optional} describing the result of the 
                    reduction
@throws NullPointerException if the result of the reduction is null or
if any of the provided parameters are {@code null}

@see #reduce(BinaryOperator)
@see #min(Comparator)
@see #max(Comparator)
common-parent/mapstream/src/main/java/com/speedment/common/mapstream/MapStream.java