code: public static <T, R, V> Function<T, V> compose(final Function<T, R> first, final Function<? super R, ? extends V> second) {
          return new Function<T, V>() {
              @Override
              public V apply(T argument) {
                  return second.apply(first.apply(argument));
              }
          };
      }
docs: Create a function that uses the result of the first function as the input to the second.
  
  @param first  a function
  @param second a function
  @param <T>    input to the first function
  @param <R>    result of the first function, input to second
  @param <V>    result of the second function
  @return a function composed o first and second