code: public static <T> ObjectBinding<T> reducing(final ObservableList<T> items, final ObservableValue<BinaryOperator<T>> reducer, final Supplier<T> supplier) {
          return Bindings.createObjectBinding(() -> items.stream().reduce(reducer.getValue()).orElseGet(supplier), items, reducer);
      }
docs: Returns an object binding whose value is the reduction of all elements in the list.
  
  @param items    the observable list of elements.
  @param reducer  an associative, non-interfering, stateless function for combining two values.
  @param supplier a {@code Supplier} whose result is returned if no value is present.
  
  @return an object binding