### Question:
XYStepAreaRenderer extends AbstractXYItemRenderer implements XYItemRenderer, Cloneable, PublicCloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof XYStepAreaRenderer)) { return false; } XYStepAreaRenderer that = (XYStepAreaRenderer) obj; if (this.showOutline != that.showOutline) { return false; } if (this.shapesVisible != that.shapesVisible) { return false; } if (this.shapesFilled != that.shapesFilled) { return false; } if (this.plotArea != that.plotArea) { return false; } if (this.rangeBase != that.rangeBase) { return false; } if (this.stepPoint != that.stepPoint) { return false; } return super.equals(obj); } XYStepAreaRenderer();  XYStepAreaRenderer(int type);  XYStepAreaRenderer(int type,
                              XYToolTipGenerator toolTipGenerator,
                              XYURLGenerator urlGenerator); boolean isOutline(); void setOutline(boolean show); boolean getShapesVisible(); void setShapesVisible(boolean flag); boolean isShapesFilled(); void setShapesFilled(boolean filled); boolean getPlotArea(); void setPlotArea(boolean flag); double getRangeBase(); void setRangeBase(double val); double getStepPoint(); void setStepPoint(double stepPoint); @Override XYItemRendererState initialise(Graphics2D g2, Rectangle2D dataArea,
            XYPlot plot, XYDataset data, PlotRenderingInfo info); @Override void drawItem(Graphics2D g2, XYItemRendererState state, 
            Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot,
            ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset,
            int series, int item, CrosshairState crosshairState, int pass); @Override boolean equals(Object obj); @Override Object clone(); static final int SHAPES; static final int AREA; static final int AREA_AND_SHAPES; }### Answer:
@Test public void testEquals() { XYStepAreaRenderer r1 = new XYStepAreaRenderer(); XYStepAreaRenderer r2 = new XYStepAreaRenderer(); assertEquals(r1, r2); r1.setOutline(true); assertFalse(r1.equals(r2)); r2.setOutline(true); assertEquals(r1, r2); r1.setShapesVisible(true); assertFalse(r1.equals(r2)); r2.setShapesVisible(true); assertEquals(r1, r2); r1.setShapesFilled(true); assertFalse(r1.equals(r2)); r2.setShapesFilled(true); assertEquals(r1, r2); r1.setPlotArea(false); assertFalse(r1.equals(r2)); r2.setPlotArea(false); assertEquals(r1, r2); r1.setRangeBase(-1.0); assertFalse(r1.equals(r2)); r2.setRangeBase(-1.0); assertEquals(r1, r2); r1.setStepPoint(0.33); assertFalse(r1.equals(r2)); r2.setStepPoint(0.33); assertEquals(r1, r2); }