### Question:
IsNull implements Predicate<A> { @Override public boolean equals(Object that) { return that instanceof IsNull<?>; } IsNull(); boolean test(A obj); @Override boolean equals(Object that); @Override int hashCode(); @Override String toString(); static IsNull<T> instance(); static BinaryPredicate<A, Object> left(); static BinaryPredicate<Object, A> right(); static final IsNull<Object> INSTANCE; static final BinaryPredicate<Object, Object> LEFT; static final BinaryPredicate<Object, Object> RIGHT; }### Answer:
@Test public void testEquals() throws Exception { Predicate<Object> p = new IsNull<Object>(); assertEquals(p, p); assertObjectsAreEqual(p, new IsNull<Object>()); assertObjectsAreEqual(p, IsNull.instance()); assertObjectsAreNotEqual(p, Constant.TRUE); }