### Question:
AbstractLoopNullaryProcedure implements NullaryProcedure { @Override public final boolean equals(Object object) { if (object == this) { return true; } if (!(object instanceof AbstractLoopNullaryProcedure)) { return false; } AbstractLoopNullaryProcedure that = (AbstractLoopNullaryProcedure) object; return (getCondition().equals(that.getCondition()) && (getAction().equals(that.getAction()))); } protected  AbstractLoopNullaryProcedure(NullaryPredicate condition, NullaryProcedure action); @Override final boolean equals(Object object); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEquals() { MockLoopProcedure p = new MockLoopProcedure(Constant.FALSE, NoOp.INSTANCE); assertEquals(p,p); assertObjectsAreEqual(p,new MockLoopProcedure(Constant.FALSE, NoOp.INSTANCE)); assertObjectsAreNotEqual(p,new MockLoopProcedure(Constant.TRUE, NoOp.INSTANCE)); assertObjectsAreNotEqual(p,new MockLoopProcedure(Constant.FALSE, new NullarySequence())); }