### Question:
StatisticalBarRenderer extends BarRenderer implements CategoryItemRenderer, Cloneable, PublicCloneable,
                   Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof StatisticalBarRenderer)) { return false; } StatisticalBarRenderer that = (StatisticalBarRenderer) obj; if (!PaintUtils.equal(this.errorIndicatorPaint, that.errorIndicatorPaint)) { return false; } if (!ObjectUtils.equal(this.errorIndicatorStroke, that.errorIndicatorStroke)) { return false; } return super.equals(obj); } StatisticalBarRenderer(); 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 data,
                         int row,
                         int column,
                         int pass); @Override boolean equals(Object obj);  }### Answer:
@Test public void testEquals() { StatisticalBarRenderer r1 = new StatisticalBarRenderer(); StatisticalBarRenderer r2 = new StatisticalBarRenderer(); assertEquals(r1, r2); r1.setErrorIndicatorPaint(Color.RED); assertFalse(r1.equals(r2)); r2.setErrorIndicatorPaint(Color.RED); assertEquals(r2, r1); r1.setErrorIndicatorStroke(new BasicStroke(1.5f)); assertFalse(r1.equals(r2)); r2.setErrorIndicatorStroke(new BasicStroke(1.5f)); assertEquals(r2, r1); }