### Question:
IgnoreLeftFunction implements BinaryFunction<L, R, T> { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof IgnoreLeftFunction<?, ?, ?>)) { return false; } IgnoreLeftFunction<?, ?, ?> that = (IgnoreLeftFunction<?, ?, ?>) obj; return this.function.equals(that.function); } IgnoreLeftFunction(Function<? super R, ? extends T> function); T evaluate(L left, R right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static IgnoreLeftFunction<L, R, T> adapt(Function<? super R, ? extends T> function);  }### Answer:
@Test public void testEquals() throws Exception { BinaryFunction<Object, Object, String> f = new IgnoreLeftFunction<Object, Object, String>(Constant.of("xyzzy")); assertEquals(f,f); assertObjectsAreEqual(f,new IgnoreLeftFunction<Object, Object, String>(Constant.of("xyzzy"))); assertObjectsAreNotEqual(f,Constant.of("x")); assertObjectsAreNotEqual(f,new IgnoreLeftFunction<Object, Object, String>(Constant.<String>of(null))); assertObjectsAreNotEqual(f,Constant.of(null)); assertTrue(!f.equals(null)); }