### Question:
NullaryFunctionNullaryProcedure implements NullaryProcedure { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof NullaryFunctionNullaryProcedure)) { return false; } NullaryFunctionNullaryProcedure that = (NullaryFunctionNullaryProcedure) obj; return this.function.equals(that.function); } NullaryFunctionNullaryProcedure(NullaryFunction<?> function); void run(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static NullaryFunctionNullaryProcedure adapt(NullaryFunction<?> function);  }### Answer:
@Test public void testEquals() throws Exception { NullaryProcedure p = new NullaryFunctionNullaryProcedure(Constant.of("K")); assertEquals(p,p); assertObjectsAreEqual(p,new NullaryFunctionNullaryProcedure(Constant.of("K"))); assertObjectsAreNotEqual(p,NoOp.INSTANCE); assertObjectsAreNotEqual(p,new NullaryFunctionNullaryProcedure(Constant.of("J"))); assertTrue(!p.equals(null)); }