### Question:
XYSplineRenderer extends XYLineAndShapeRenderer { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof XYSplineRenderer)) { return false; } XYSplineRenderer that = (XYSplineRenderer) obj; if (this.precision != that.precision) { return false; } if (this.fillType != that.fillType) { return false; } if (!ObjectUtilities.equal(this.gradientPaintTransformer, that.gradientPaintTransformer)) { return false; } return super.equals(obj); } XYSplineRenderer();  XYSplineRenderer(int precision);  XYSplineRenderer(int precision, FillType fillType); int getPrecision(); void setPrecision(int p); FillType getFillType(); void setFillType(FillType fillType); GradientPaintTransformer getGradientPaintTransformer(); void setGradientPaintTransformer(GradientPaintTransformer gpt); @Override XYItemRendererState initialise(Graphics2D g2, Rectangle2D dataArea,
            XYPlot plot, XYDataset data, PlotRenderingInfo info); @Override boolean equals(Object obj);  }### Answer:
@Test public void testEquals() { XYSplineRenderer r1 = new XYSplineRenderer(); XYSplineRenderer r2 = new XYSplineRenderer(); assertEquals(r1, r2); assertEquals(r2, r1); r1.setPrecision(9); assertFalse(r1.equals(r2)); r2.setPrecision(9); assertEquals(r1, r2); }