### Question:
ChartRenderingInfo implements Cloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof ChartRenderingInfo)) { return false; } ChartRenderingInfo that = (ChartRenderingInfo) obj; if (!ObjectUtils.equal(this.chartArea, that.chartArea)) { return false; } if (!ObjectUtils.equal(this.plotInfo, that.plotInfo)) { return false; } if (!ObjectUtils.equal(this.entities, that.entities)) { return false; } return true; } ChartRenderingInfo();  ChartRenderingInfo(EntityCollection entities); Rectangle2D getChartArea(); void setChartArea(Rectangle2D area); EntityCollection getEntityCollection(); void setEntityCollection(EntityCollection entities); void clear(); PlotRenderingInfo getPlotInfo(); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testEquals() { ChartRenderingInfo i1 = new ChartRenderingInfo(); ChartRenderingInfo i2 = new ChartRenderingInfo(); assertEquals(i1, i2); i1.setChartArea(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertFalse(i1.equals(i2)); i2.setChartArea(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertEquals(i1, i2); i1.getPlotInfo().setDataArea(new Rectangle(1, 2, 3, 4)); assertFalse(i1.equals(i2)); i2.getPlotInfo().setDataArea(new Rectangle(1, 2, 3, 4)); assertEquals(i1, i2); StandardEntityCollection e1 = new StandardEntityCollection(); e1.add(new ChartEntity(new Rectangle(1, 2, 3, 4))); i1.setEntityCollection(e1); assertFalse(i1.equals(i2)); StandardEntityCollection e2 = new StandardEntityCollection(); e2.add(new ChartEntity(new Rectangle(1, 2, 3, 4))); i2.setEntityCollection(e2); }