### Question:
XYDotRenderer extends AbstractXYItemRenderer implements XYItemRenderer, PublicCloneable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof XYDotRenderer)) { return false; } XYDotRenderer that = (XYDotRenderer) obj; if (this.dotWidth != that.dotWidth) { return false; } if (this.dotHeight != that.dotHeight) { return false; } if (!ShapeUtils.equal(this.legendShape, that.legendShape)) { return false; } return super.equals(obj); } XYDotRenderer(); int getDotWidth(); void setDotWidth(int w); int getDotHeight(); void setDotHeight(int h); Shape getLegendShape(); void setLegendShape(Shape shape); @Override void drawItem(Graphics2D g2, XYItemRendererState state,
            Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot,
            ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset,
            int series, int item, CrosshairState crosshairState, int pass); @Override LegendItem getLegendItem(int datasetIndex, int series); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testEquals() { XYDotRenderer r1 = new XYDotRenderer(); XYDotRenderer r2 = new XYDotRenderer(); assertEquals(r1, r2); r1.setDotWidth(11); assertFalse(r1.equals(r2)); r2.setDotWidth(11); assertEquals(r1, r2); r1.setDotHeight(12); assertFalse(r1.equals(r2)); r2.setDotHeight(12); assertEquals(r1, r2); r1.setLegendShape(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertFalse(r1.equals(r2)); r2.setLegendShape(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertEquals(r1, r2); }