### Question:
CrosshairOverlay extends AbstractOverlay implements Overlay,
        PropertyChangeListener, PublicCloneable, Cloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof CrosshairOverlay)) { return false; } CrosshairOverlay that = (CrosshairOverlay) obj; if (!this.xCrosshairs.equals(that.xCrosshairs)) { return false; } if (!this.yCrosshairs.equals(that.yCrosshairs)) { return false; } return true; } CrosshairOverlay(); void addDomainCrosshair(Crosshair crosshair); void removeDomainCrosshair(Crosshair crosshair); void clearDomainCrosshairs(); List<Crosshair> getDomainCrosshairs(); void addRangeCrosshair(Crosshair crosshair); void removeRangeCrosshair(Crosshair crosshair); void clearRangeCrosshairs(); List<Crosshair> getRangeCrosshairs(); @Override void propertyChange(PropertyChangeEvent e); @Override void paintOverlay(Graphics2D g2, ChartPanel chartPanel); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testEquals() { CrosshairOverlay o1 = new CrosshairOverlay(); CrosshairOverlay o2 = new CrosshairOverlay(); assertEquals(o1, o2); }