@Override
    public <U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner) {
        requireNonNull(identity);
        requireNonNull(accumulator);
        requireNonNull(combiner);
        assertNotLinkedOrConsumedAndSet();
        return finallyCloseReference(() -> streamTerminator.reduce(pipeline(), identity, accumulator, combiner));
    }
{@inheritDoc}

<p>
N.B. This method may short-circuit operations in the Stream pipeline and
closes the stream automatically when a terminal operation is performed.
runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/stream/builder/ReferenceStreamBuilder.java