### Question:
XYShapeRenderer extends AbstractXYItemRenderer implements XYItemRenderer, Cloneable, Serializable { @Override public Object clone() throws CloneNotSupportedException { XYShapeRenderer clone = (XYShapeRenderer) super.clone(); if (this.paintScale instanceof PublicCloneable) { PublicCloneable pc = (PublicCloneable) this.paintScale; clone.paintScale = (PaintScale) pc.clone(); } return clone; } XYShapeRenderer(); PaintScale getPaintScale(); void setPaintScale(PaintScale scale); boolean getDrawOutlines(); void setDrawOutlines(boolean flag); boolean getUseFillPaint(); void setUseFillPaint(boolean flag); boolean getUseOutlinePaint(); void setUseOutlinePaint(boolean use); boolean isGuideLinesVisible(); void setGuideLinesVisible(boolean visible); Paint getGuideLinePaint(); void setGuideLinePaint(Paint paint); Stroke getGuideLineStroke(); void setGuideLineStroke(Stroke stroke); @Override Range findDomainBounds(XYDataset dataset); @Override Range findRangeBounds(XYDataset dataset); Range findZBounds(XYZDataset dataset); @Override int getPassCount(); @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();  }### Answer:
@Test public void testCloning() throws CloneNotSupportedException { XYShapeRenderer r1 = new XYShapeRenderer(); XYShapeRenderer r2 = (XYShapeRenderer) r1.clone(); assertNotSame(r1, r2); assertSame(r1.getClass(), r2.getClass()); assertEquals(r1, r2); }