### Question:
PropertysetItem implements Item, Item.PropertySetChangeNotifier,
        Cloneable { @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof PropertysetItem)) { return false; } final PropertysetItem other = (PropertysetItem) obj; if (other.list != list) { if (other.list == null) { return false; } if (!other.list.equals(list)) { return false; } } if (other.map != map) { if (other.map == null) { return false; } if (!other.map.equals(map)) { return false; } } if (other.propertySetChangeListeners != propertySetChangeListeners) { boolean thisEmpty = (propertySetChangeListeners == null || propertySetChangeListeners .isEmpty()); boolean otherEmpty = (other.propertySetChangeListeners == null || other.propertySetChangeListeners .isEmpty()); if (thisEmpty && otherEmpty) { return true; } if (otherEmpty) { return false; } if (!other.propertySetChangeListeners .equals(propertySetChangeListeners)) { return false; } } return true; }  @Override Property getItemProperty(Object id); @Override Collection<?> getItemPropertyIds(); @Override boolean removeItemProperty(Object id); @Override boolean addItemProperty(Object id, Property property); @Override String toString(); @Override void addPropertySetChangeListener(
            Item.PropertySetChangeListener listener); @Override void removePropertySetChangeListener(
            Item.PropertySetChangeListener listener); Collection<?> getListeners(Class<?> eventType); @Override Object clone(); @Override boolean equals(Object obj); @Override int hashCode();  }### Answer:
@Test public void testItemEqualsNull() { PropertysetItem item = createPropertySetItem(); Assert.assertFalse(item.equals(null)); }
@Test public void testEmptyItemEquals() { PropertysetItem item1 = createPropertySetItem(); PropertysetItem item2 = createPropertySetItem(); Assert.assertTrue(item1.equals(item2)); }