code: public static <A, B, C> Function<A, C> compose(Function<A, B> f1, Function<B, C> f2) {
          return requireNonNull(f1, "f1").andThen(requireNonNull(f2, "f2"));
      }
docs: Returns a {@link Function} that composes the specified {@link Function}s with chained
  {@link Function#andThen(Function)}. It is useful when you need to compose method handles, which is
  impossible with {@link Function#andThen(Function)}:
  <pre>{@code
  Function<A, B> f = Functions.compose(TypeA::new, TypeB::new);
  }</pre>