### Question:
Crosshair implements Cloneable, PublicCloneable, Serializable { @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } Crosshair();  Crosshair(double value);  Crosshair(double value, Paint paint, Stroke stroke); boolean isVisible(); void setVisible(boolean visible); double getValue(); void setValue(double value); Paint getPaint(); void setPaint(Paint paint); Stroke getStroke(); void setStroke(Stroke stroke); boolean isLabelVisible(); void setLabelVisible(boolean visible); CrosshairLabelGenerator getLabelGenerator(); void setLabelGenerator(CrosshairLabelGenerator generator); RectangleAnchor getLabelAnchor(); void setLabelAnchor(RectangleAnchor anchor); double getLabelXOffset(); void setLabelXOffset(double offset); double getLabelYOffset(); void setLabelYOffset(double offset); Font getLabelFont(); void setLabelFont(Font font); Paint getLabelPaint(); void setLabelPaint(Paint paint); Paint getLabelBackgroundPaint(); void setLabelBackgroundPaint(Paint paint); boolean isLabelOutlineVisible(); void setLabelOutlineVisible(boolean visible); Paint getLabelOutlinePaint(); void setLabelOutlinePaint(Paint paint); Stroke getLabelOutlineStroke(); void setLabelOutlineStroke(Stroke stroke); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone(); void addPropertyChangeListener(PropertyChangeListener l); void removePropertyChangeListener(PropertyChangeListener l);  }### Answer:
@Test public void testCloning() throws CloneNotSupportedException { Crosshair c1 = new Crosshair(1.0, new GradientPaint(1.0f, 2.0f, Color.RED, 3.0f, 4.0f, Color.BLUE), new BasicStroke(1.0f)); Crosshair c2 = (Crosshair) c1.clone(); assertNotSame(c1, c2); assertSame(c1.getClass(), c2.getClass()); assertEquals(c1, c2); }