### Question:
CategoryLabelEntity extends TickLabelEntity { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof CategoryLabelEntity)) { return false; } CategoryLabelEntity that = (CategoryLabelEntity) obj; if (!ObjectUtils.equal(this.key, that.key)) { return false; } return super.equals(obj); } CategoryLabelEntity(Comparable key, Shape area,
            String toolTipText, String urlText); Comparable getKey(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEquals() { CategoryLabelEntity e1 = new CategoryLabelEntity("A", new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), "ToolTip", "URL"); CategoryLabelEntity e2 = new CategoryLabelEntity("A", new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), "ToolTip", "URL"); assertEquals(e1, e2); e1 = new CategoryLabelEntity("B", new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), "ToolTip", "URL"); assertFalse(e1.equals(e2)); e2 = new CategoryLabelEntity("B", new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), "ToolTip", "URL"); assertEquals(e1, e2); e1.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertFalse(e1.equals(e2)); e2.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertEquals(e1, e2); e1.setToolTipText("New ToolTip"); assertFalse(e1.equals(e2)); e2.setToolTipText("New ToolTip"); assertEquals(e1, e2); e1.setURLText("New URL"); assertFalse(e1.equals(e2)); e2.setURLText("New URL"); assertEquals(e1, e2); }