### Question:
ScatterRenderer extends AbstractCategoryItemRenderer implements Cloneable, PublicCloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof ScatterRenderer)) { return false; } ScatterRenderer that = (ScatterRenderer) obj; if (!ObjectUtils.equal(this.seriesShapesFilled, that.seriesShapesFilled)) { return false; } if (this.baseShapesFilled != that.baseShapesFilled) { return false; } if (this.useFillPaint != that.useFillPaint) { return false; } if (this.drawOutlines != that.drawOutlines) { return false; } if (this.useOutlinePaint != that.useOutlinePaint) { return false; } if (this.useSeriesOffset != that.useSeriesOffset) { return false; } if (this.itemMargin != that.itemMargin) { return false; } return super.equals(obj); } ScatterRenderer(); boolean getUseSeriesOffset(); void setUseSeriesOffset(boolean offset); double getItemMargin(); void setItemMargin(double margin); boolean getDrawOutlines(); void setDrawOutlines(boolean flag); boolean getUseOutlinePaint(); void setUseOutlinePaint(boolean use); boolean getItemShapeFilled(int series, int item); boolean getSeriesShapesFilled(int series); void setSeriesShapesFilled(int series, Boolean filled); void setSeriesShapesFilled(int series, boolean filled); boolean getBaseShapesFilled(); void setBaseShapesFilled(boolean flag); boolean getUseFillPaint(); void setUseFillPaint(boolean flag); @Override Range findRangeBounds(CategoryDataset dataset); @Override void drawItem(Graphics2D g2, CategoryItemRendererState state,
            Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis,
            ValueAxis rangeAxis, CategoryDataset dataset, int row, int column,
            int pass); @Override LegendItem getLegendItem(int datasetIndex, int series); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testEquals() { ScatterRenderer r1 = new ScatterRenderer(); ScatterRenderer r2 = new ScatterRenderer(); assertEquals(r1, r2); r1.setSeriesShapesFilled(1, true); assertFalse(r1.equals(r2)); r2.setSeriesShapesFilled(1, true); assertEquals(r1, r2); r1.setBaseShapesFilled(false); assertFalse(r1.equals(r2)); r2.setBaseShapesFilled(false); assertEquals(r1, r2); r1.setUseFillPaint(true); assertFalse(r1.equals(r2)); r2.setUseFillPaint(true); assertEquals(r1, r2); r1.setDrawOutlines(true); assertFalse(r1.equals(r2)); r2.setDrawOutlines(true); assertEquals(r1, r2); r1.setUseOutlinePaint(true); assertFalse(r1.equals(r2)); r2.setUseOutlinePaint(true); assertEquals(r1, r2); r1.setUseSeriesOffset(false); assertFalse(r1.equals(r2)); r2.setUseSeriesOffset(false); assertEquals(r1, r2); }