android/guava/src/com/google/common/base/Functions.java
public static <A, B, C> Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f) {
    return new FunctionComposition<>(g, f);
  }
public static <A, B, C> Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f) {
    return new FunctionComposition<>(g, f);
  }
Returns the composition of two functions. For {@code f: A->B} and {@code g: B->C}, composition
is defined as the function h such that {@code h(a) == g(f(a))} for each {@code a}.

<p><b>Java 8 users:</b> use {@code g.compose(f)} or (probably clearer) {@code f.andThen(g)}
instead.

@param g the second function to apply
@param f the first function to apply
@return the composition of {@code f} and {@code g}
@see <a href="//en.wikipedia.org/wiki/Function_composition">function composition</a>