code: public static <T, R> Optional<R> accumulatePresent(final IterableX<Optional<T>> optionals, final Function<? super T, R> mapper,
              final Monoid<R> reducer) {
          return sequencePresent(optionals).map(s -> s.map(mapper)
                                                   .reduce(reducer));
      }
docs: Accumulate the results only from those Optionals which have a value present, using the supplied mapping function to
  convert the data from each Optional before reducing them using the supplied Monoid (a combining BiFunction/BinaryOperator and identity element that takes two
  input values of the same type and returns the combined result) {@see cyclops2.Monoids }.
  
  <pre>
  {@code
  Optional<Integer> just = Optional.of(10);
  Optional<Integer> none = Optional.zero();
  
  Optional<String> opts = Optional.accumulateJust(Seq.of(just, none, Optional.of(1)), i -> "" + i,
  Monoids.stringConcat);
  Optional.of("101")
  
  }
  </pre>
  
  @param optionals Optionals to accumulate
  @param mapper Mapping function to be applied to the result of each Optional
  @param reducer Monoid to combine values from each Optional
  @return Optional with reduced value