### Question:
EnumDef extends AttributeTypeDef { @Override public boolean equals(Object objectToCompare) { if (this == objectToCompare) { return true; } if (!(objectToCompare instanceof EnumDef)) { return false; } if (!super.equals(objectToCompare)) { return false; } EnumDef enumDef = (EnumDef) objectToCompare; return Objects.equals(getElementDefs(), enumDef.getElementDefs()) && Objects.equals(getDefaultValue(), enumDef.getDefaultValue()); } EnumDef();  EnumDef(EnumDef   template); AttributeTypeDef cloneFromSubclass(); List<EnumElementDef> getElementDefs(); void setElementDefs(List<EnumElementDef> elementDefs); EnumElementDef getDefaultValue(); void setDefaultValue(EnumElementDef defaultValue); @Override String toString(); @Override boolean equals(Object objectToCompare);  }### Answer:
@Test public void testEquals() { assertTrue(getTestObject().equals(getTestObject())); AttributeTypeDef testObject = getTestObject(); assertTrue(testObject.equals(testObject)); testObject.setName("Freddy"); assertFalse(getTestObject().equals(testObject)); assertFalse(getTestObject().equals(null)); assertFalse(getTestObject().equals("AString")); assertFalse(getTestObject().equals(new CollectionDef())); }