public static <F, T> Supplier<T> compose(Function<? super F, T> function, Supplier<F> supplier) {
    return new SupplierComposition<>(function, supplier);
  }
public static <F, T> Supplier<T> compose(Function<? super F, T> function, Supplier<F> supplier) {
    return new SupplierComposition<>(function, supplier);
  }
public static < F , T > Supplier < T > compose ( Function < ? super F , T > function , Supplier < F > supplier ) { return new SupplierComposition <> ( function , supplier ) ; }
Returns a new supplier which is the composition of the provided function and supplier. In other
words, the new supplier's value will be computed by retrieving the value from {@code supplier},
and then applying {@code function} to that value. Note that the resulting supplier will not
call {@code supplier} or invoke {@code function} until it is called.
Returns a new supplier which is the composition of the provided function and supplier . In other words the new supplier s value will be computed by retrieving the value from {