@SuppressWarnings("unchecked")
    public static <T> Function<T, T> compose(final Function<T, T> ... func) {
        return new Function<T, T>() {
            public T apply(final T arg) {
                T result = arg;
                for (int index = func.length - 1; index >= 0; index -= 1) {
                    result = func[index].apply(result);
                }
                return result;
            }
        };
    }
@ SuppressWarnings ( "unchecked" ) public static < T > Function < T , T > compose ( final Function < T , T > ... func ) { return new Function < T , T > ( ) { public T apply ( final T arg ) { T result = arg ; for ( int index = func . length - 1 ; index >= 0 ; index -= 1 ) { result = func [ index ] . apply ( result ) ; } return result ; } } ; }
/*
Documented, #compose