### Question:
BoundNullaryPredicate implements NullaryPredicate { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof BoundNullaryPredicate)) { return false; } BoundNullaryPredicate that = (BoundNullaryPredicate) obj; return predicate.equals(that.predicate) && (null == param ? null == that.param : param.equals(that.param)); } @SuppressWarnings("unchecked") <A> BoundNullaryPredicate(Predicate<? super A> predicate, A arg); boolean test(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static BoundNullaryPredicate bind(Predicate<? super A> predicate, A arg);  }### Answer:
@Test public void testEquals() throws Exception { NullaryPredicate f = new BoundNullaryPredicate(Constant.TRUE,"xyzzy"); assertEquals(f,f); assertObjectsAreEqual(f,new BoundNullaryPredicate(Constant.TRUE,"xyzzy")); assertObjectsAreNotEqual(f,Constant.TRUE); assertObjectsAreNotEqual(f,new BoundNullaryPredicate(Constant.TRUE,"foo")); assertObjectsAreNotEqual(f,new BoundNullaryPredicate(Constant.FALSE,"xyzzy")); assertObjectsAreNotEqual(f,new BoundNullaryPredicate(Constant.TRUE,null)); assertObjectsAreEqual(new BoundNullaryPredicate(Constant.TRUE,null),new BoundNullaryPredicate(Constant.TRUE,null)); assertTrue(!f.equals(null)); }