### Question:
XYDotRenderer extends AbstractXYItemRenderer implements XYItemRenderer, PublicCloneable { public void setDotHeight(int h) { if (h < 1) { throw new IllegalArgumentException("Requires h > 0."); } this.dotHeight = h; fireChangeEvent(); } XYDotRenderer(); int getDotWidth(); void setDotWidth(int w); int getDotHeight(); void setDotHeight(int h); Shape getLegendShape(); void setLegendShape(Shape shape); @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();  }### Answer:
@Test public void testHashcode() { XYDotRenderer r1 = new XYDotRenderer(); XYDotRenderer r2 = new XYDotRenderer(); assertEquals(r1, r2); int h1 = r1.hashCode(); int h2 = r2.hashCode(); assertEquals(h1, h2); r1.setDotHeight(12); r2.setDotHeight(12); assertEquals(r1, r2); h1 = r1.hashCode(); h2 = r2.hashCode(); assertEquals(h1, h2); }