### Question:
ArrowNeedle extends MeterNeedle implements Cloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof ArrowNeedle)) { return false; } if (!super.equals(obj)) { return false; } ArrowNeedle that = (ArrowNeedle) obj; if (this.isArrowAtTop != that.isArrowAtTop) { return false; } return true; } ArrowNeedle(boolean isArrowAtTop); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone();  }### Answer:
@Test public void testEquals() { ArrowNeedle n1 = new ArrowNeedle(false); ArrowNeedle n2 = new ArrowNeedle(false); assertEquals(n1, n2); assertEquals(n2, n1); n1 = new ArrowNeedle(true); assertFalse(n1.equals(n2)); n2 = new ArrowNeedle(true); assertEquals(n1, n2); }