### Question:
NullaryPredicatePredicate implements Predicate<A> { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof NullaryPredicatePredicate<?>)) { return false; } NullaryPredicatePredicate<?> that = (NullaryPredicatePredicate<?>) obj; return this.predicate.equals(that.predicate); } NullaryPredicatePredicate(NullaryPredicate predicate); boolean test(Object obj); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static NullaryPredicatePredicate<A> adapt(NullaryPredicate predicate);  }### Answer:
@Test public void testEquals() throws Exception { Predicate<Object> p = new NullaryPredicatePredicate<Object>(Constant.TRUE); assertEquals(p,p); assertObjectsAreEqual(p,new NullaryPredicatePredicate<Object>(Constant.TRUE)); assertObjectsAreNotEqual(p,Constant.TRUE); assertObjectsAreNotEqual(p,new NullaryPredicatePredicate<Object>(Constant.FALSE)); assertObjectsAreNotEqual(p,Constant.FALSE); assertTrue(!p.equals(null)); }