public static <T>List<T> satisfy(List<T> input,Function<? super T,? extends OrderingConstraints<T>> constraintSupplier){
  return satisfy(input,Function.identity(),constraintSupplier);
}

public static < T > List < T > satisfy ( List < T > input , Function < ? super T , ? extends OrderingConstraints < T > > constraintSupplier ) { return satisfy ( input , Function . identity ( ) , constraintSupplier ) ; }
returns a list which orders the given input list , meeting any constraints .
