default T fold(final T identity,final BinaryOperator<T> accumulator){
  final Optional<T> opt=toOptional();
  if (opt.isPresent())   return accumulator.apply(identity,get());
  return identity;
}

default T fold ( final T identity , final BinaryOperator < T > accumulator ) { final Optional < T > opt = toOptional ( ) ; if ( opt . isPresent ( ) ) return accumulator . apply ( identity , get ( ) ) ; return identity ; }
use the supplied identity value and function to reduce this value to a single result ( unwraps the value stored in this value if the provided monoid combination instance obeys the monoid laws )
