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