Func1<S, U> pipe2<S, T, U>(final Func1<S, T> f1, final Func1<T, U> f2) => (final value) => f2(f1(value));