### Question:
IdentifiableModel extends FeatureAbstract implements Identifiable, Recyclable { @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } final IdentifiableModel other = (IdentifiableModel) obj; return other.id.equals(id); } IdentifiableModel(); @Override void addListener(IdentifiableListener listener); @Override void removeListener(IdentifiableListener listener); @Override Integer getId(); @Override void destroy(); @Override void notifyDestroyed(); @Override void recycle(); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test void testEquals() { final IdentifiableModel model = new IdentifiableModel(); assertEquals(model, model); assertNotEquals(model, null); assertNotEquals(model, new Object()); assertNotEquals(model, new IdentifiableModel()); }