### Question:
IgnoreLeftPredicate implements BinaryPredicate<L, R> { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof IgnoreLeftPredicate<?, ?>)) { return false; } IgnoreLeftPredicate<?, ?> that = (IgnoreLeftPredicate<?, ?>) obj; return this.predicate.equals(that.predicate); } IgnoreLeftPredicate(Predicate<? super R> predicate); boolean test(L left, R right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static IgnoreLeftPredicate<L, R> adapt(Predicate<? super R> predicate);  }### Answer:
@Test public void testEquals() throws Exception { BinaryPredicate<Object, Boolean> p = new IgnoreLeftPredicate<Object, Boolean>( new FunctionPredicate<Boolean>(Identity.<Boolean> instance())); assertEquals(p,p); assertObjectsAreEqual(p,new IgnoreLeftPredicate<Object, Boolean>( new FunctionPredicate<Boolean>(Identity.<Boolean> instance()))); assertObjectsAreNotEqual(p,Constant.TRUE); assertObjectsAreNotEqual(p,new IgnoreLeftPredicate<Object, Object>(Constant.FALSE)); assertObjectsAreNotEqual(p,Constant.FALSE); assertObjectsAreNotEqual(p,new IgnoreLeftPredicate<Object, Object>(Constant.of(null))); assertObjectsAreEqual(new IgnoreLeftPredicate<Object, Object>(Constant.of(null)),new IgnoreLeftPredicate<Object, Object>(Constant.of(null))); assertTrue(!p.equals(null)); }