code: public static <F, T> Supplier<T> compose(Function<? super F, T> function, Supplier<F> supplier) {
  		return () -> function.apply(supplier.get());
  	}
docs: 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.