### Question:
AbstractDialLayer implements DialLayer { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof AbstractDialLayer)) { return false; } AbstractDialLayer that = (AbstractDialLayer) obj; return this.visible == that.visible; } protected  AbstractDialLayer(); @Override boolean isVisible(); void setVisible(boolean visible); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone(); @Override void addChangeListener(DialLayerChangeListener listener); @Override void removeChangeListener(DialLayerChangeListener listener); @Override boolean hasListener(EventListener listener);  }### Answer:
@Test public void testEquals() { DialCap c1 = new DialCap(); DialCap c2 = new DialCap(); assertEquals(c1, c2); c1.setVisible(false); assertFalse(c1.equals(c2)); c2.setVisible(false); assertEquals(c1, c2); }