public <G, H> BinaryCompositeBinaryFunction(BinaryFunction<? super G, ? super H, ? extends T> f,
            BinaryFunction<? super L, ? super R, ? extends G> g, BinaryFunction<? super L, ? super R, ? extends H> h) {
        this.helper = new Helper<G, H, L, R, T>(
                Validate.notNull(f, "final BinaryFunction argument must not be null"),
                Validate.notNull(g, "left preceding BinaryFunction argument must not be null"),
                Validate.notNull(h, "right preceding BinaryFunction argument must not be null")
        );
    }