### Question:
CompositeBinaryFunction implements BinaryFunction<L, R, T> { public T evaluate(L left, R right) { return helper.evaluate(left, right); } <G, H> CompositeBinaryFunction(BinaryFunction<? super G, ? super H, ? extends T> f,
            Function<? super L, ? extends G> g, Function<? super R, ? extends H> h); T evaluate(L left, R right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEvaluate() throws Exception { BinaryFunction<Object, Object, Object> f = new CompositeBinaryFunction<Object, Object, Object>( RightIdentity.FUNCTION, Constant.of("K"), Identity.instance()); assertEquals("right",f.evaluate("left","right")); assertNull("right",f.evaluate("left",null)); assertEquals("right",f.evaluate(null,"right")); }