docs: public Optional<T> reduce(final BiFunction<T, ? super T, T> accumulator) {
          boolean found = false;
          T result = null;
          while (iterator.hasNext()) {
              if (!found) {
                  result = iterator.next();
                  found = true;
              } else {
                  result = accumulator.apply(result, iterator.next());
              }
          }
          return found ? Optional.of(result) : Optional.<T>empty();
      }