### Question:
XYBubbleRenderer extends AbstractXYItemRenderer implements XYItemRenderer, PublicCloneable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof XYBubbleRenderer)) { return false; } XYBubbleRenderer that = (XYBubbleRenderer) obj; if (this.scaleType != that.scaleType) { return false; } return super.equals(obj); } XYBubbleRenderer();  XYBubbleRenderer(ScaleType scaleType); ScaleType getScaleType(); boolean getDrawOutlines(); void setDrawOutlines(boolean drawOutlines); @Override Range findDomainBounds(XYDataset dataset); @Override Range findRangeBounds(XYDataset dataset); @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 LegendItem getLegendItem(int datasetIndex, int series); @Override boolean equals(Object obj); @Override Object clone(); static final long serialVersionUID; }### Answer:
@Test public void testEquals() { XYBubbleRenderer r1 = new XYBubbleRenderer(); XYBubbleRenderer r2 = new XYBubbleRenderer(); assertEquals(r1, r2); r1 = new XYBubbleRenderer(ScaleType.Y_AXIS); assertFalse(r1.equals(r2)); r2 = new XYBubbleRenderer(ScaleType.Y_AXIS); assertEquals(r1, r2); }