### Question:
DialTextAnnotation extends AbstractDialLayer implements DialLayer,
        Cloneable, PublicCloneable, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof DialTextAnnotation)) { return false; } DialTextAnnotation that = (DialTextAnnotation) obj; if (!this.label.equals(that.label)) { return false; } if (!this.font.equals(that.font)) { return false; } if (!PaintUtilities.equal(this.paint, that.paint)) { return false; } if (this.radius != that.radius) { return false; } if (this.angle != that.angle) { return false; } if (!this.anchor.equals(that.anchor)) { return false; } return super.equals(obj); } DialTextAnnotation(String label); String getLabel(); void setLabel(String label); Font getFont(); void setFont(Font font); Paint getPaint(); void setPaint(Paint paint); double getAngle(); void setAngle(double angle); double getRadius(); void setRadius(double radius); TextAnchor getAnchor(); void setAnchor(TextAnchor anchor); @Override boolean isClippedToWindow(); @Override void draw(Graphics2D g2, DialPlot plot, Rectangle2D frame,
            Rectangle2D view); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone();  }### Answer:
@Test public void testEquals() { DialTextAnnotation a1 = new DialTextAnnotation("A1"); DialTextAnnotation a2 = new DialTextAnnotation("A1"); assertEquals(a1, a2); a1.setAngle(1.1); assertFalse(a1.equals(a2)); a2.setAngle(1.1); assertEquals(a1, a2); a1.setRadius(9.9); assertFalse(a1.equals(a2)); a2.setRadius(9.9); assertEquals(a1, a2); Font f = new Font("SansSerif", Font.PLAIN, 14); a1.setFont(f); assertFalse(a1.equals(a2)); a2.setFont(f); assertEquals(a1, a2); a1.setPaint(Color.RED); assertFalse(a1.equals(a2)); a2.setPaint(Color.RED); assertEquals(a1, a2); a1.setLabel("ABC"); assertFalse(a1.equals(a2)); a2.setLabel("ABC"); assertEquals(a1, a2); a1.setVisible(false); assertFalse(a1.equals(a2)); a2.setVisible(false); assertEquals(a1, a2); }