private <T>UnaryOperator<T> chainOperators(Stream<UnaryOperator<T>> operators){
  return operators.reduce(UnaryOperator.identity(),null);
}

private < T > UnaryOperator < T > chainOperators ( Stream < UnaryOperator < T > > operators ) { return operators . reduce ( UnaryOperator . identity ( ) , null ) ; }
chain a stream of functions into a single function , which applies each one after the other
