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