### Question:
StatisticalLineAndShapeRenderer extends LineAndShapeRenderer implements Cloneable, PublicCloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof StatisticalLineAndShapeRenderer)) { return false; } StatisticalLineAndShapeRenderer that = (StatisticalLineAndShapeRenderer) obj; if (!PaintUtils.equal(this.errorIndicatorPaint, that.errorIndicatorPaint)) { return false; } if (!ObjectUtils.equal(this.errorIndicatorStroke, that.errorIndicatorStroke)) { return false; } return super.equals(obj); } StatisticalLineAndShapeRenderer();  StatisticalLineAndShapeRenderer(boolean linesVisible,
                                           boolean shapesVisible); Paint getErrorIndicatorPaint(); void setErrorIndicatorPaint(Paint paint); Stroke getErrorIndicatorStroke(); void setErrorIndicatorStroke(Stroke stroke); @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 boolean equals(Object obj); @Override int hashCode();  }### Answer:
@Test public void testEquals() { StatisticalLineAndShapeRenderer r1 = new StatisticalLineAndShapeRenderer(); StatisticalLineAndShapeRenderer r2 = new StatisticalLineAndShapeRenderer(); assertEquals(r1, r2); assertEquals(r2, r1); r1.setErrorIndicatorPaint(Color.RED); assertFalse(r1.equals(r2)); r2.setErrorIndicatorPaint(Color.RED); assertEquals(r2, r1); }