### Question:
ValueAxis extends Axis implements Cloneable, PublicCloneable, Serializable { @Override public Object clone() throws CloneNotSupportedException { ValueAxis clone = (ValueAxis) super.clone(); return clone; } protected  ValueAxis(String label, TickUnitSource standardTickUnits); boolean isVerticalTickLabels(); void setVerticalTickLabels(boolean flag); boolean isPositiveArrowVisible(); void setPositiveArrowVisible(boolean visible); boolean isNegativeArrowVisible(); void setNegativeArrowVisible(boolean visible); Shape getUpArrow(); void setUpArrow(Shape arrow); Shape getDownArrow(); void setDownArrow(Shape arrow); Shape getLeftArrow(); void setLeftArrow(Shape arrow); Shape getRightArrow(); void setRightArrow(Shape arrow); abstract List<ValueTick> refreshTicks(Graphics2D g2, AxisState state,
                                                      Rectangle2D dataArea, RectangleEdge edge); @Override AxisSpace reserveSpace(Graphics2D g2, Plot plot,
            Rectangle2D plotArea, RectangleEdge edge, AxisSpace space); boolean isInverted(); void setInverted(boolean flag); boolean isAutoRange(); void setAutoRange(boolean auto); double getAutoRangeMinimumSize(); void setAutoRangeMinimumSize(double size); void setAutoRangeMinimumSize(double size, boolean notify); Range getDefaultAutoRange(); void setDefaultAutoRange(Range range); double getLowerMargin(); void setLowerMargin(double margin); double getUpperMargin(); void setUpperMargin(double margin); double getFixedAutoRange(); void setFixedAutoRange(double length); double getLowerBound(); void setLowerBound(double min); double getUpperBound(); void setUpperBound(double max); Range getRange(); void setRange(Range range); void setRange(Range range, boolean turnOffAutoRange,
                         boolean notify); void setRange(double lower, double upper); void setRangeWithMargins(Range range); void setRangeWithMargins(Range range, boolean turnOffAutoRange,
                                    boolean notify); void setRangeWithMargins(double lower, double upper); void setRangeAboutValue(double value, double length); boolean isAutoTickUnitSelection(); void setAutoTickUnitSelection(boolean flag); void setAutoTickUnitSelection(boolean flag, boolean notify); TickUnitSource getStandardTickUnits(); void setStandardTickUnits(TickUnitSource source); int getMinorTickCount(); void setMinorTickCount(int count); abstract double valueToJava2D(double value, Rectangle2D area,
                                         RectangleEdge edge); double lengthToJava2D(double length, Rectangle2D area,
                                 RectangleEdge edge); abstract double java2DToValue(double java2DValue, Rectangle2D area, 
                                         RectangleEdge edge); void centerRange(double value); void resizeRange(double percent); void resizeRange(double percent, double anchorValue); void resizeRange2(double percent, double anchorValue); void zoomRange(double lowerPercent, double upperPercent); void pan(double percent); @Override boolean equals(Object obj); @Override Object clone(); static final Range DEFAULT_RANGE; static final boolean DEFAULT_AUTO_RANGE; static final boolean DEFAULT_INVERTED; static final double DEFAULT_AUTO_RANGE_MINIMUM_SIZE; static final double DEFAULT_LOWER_MARGIN; static final double DEFAULT_UPPER_MARGIN; static final boolean DEFAULT_AUTO_TICK_UNIT_SELECTION; static final int MAXIMUM_TICK_COUNT; }### Answer:
@Test public void testCloning() throws CloneNotSupportedException { ValueAxis a1 = new NumberAxis("Test"); ValueAxis a2 = (NumberAxis) a1.clone(); assertNotSame(a1, a2); assertSame(a1.getClass(), a2.getClass()); assertEquals(a1, a2); }