docs: 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));
              }
          };
      }