ModificationsImpl implements Modifications<T_ITEM>, Cloneable { @SuppressWarnings("unchecked") @Override public ModificationsImpl<T_ITEM> clone() { try { return (ModificationsImpl<T_ITEM>) super.clone(); } catch (CloneNotSupportedException e) { throw new CheckedExceptionWrapper(e); } }  @Override boolean isModified(); @Override List<T_ITEM> getAddedItems(); void registerAddedItem(T_ITEM item); void unregisterAddedItem(T_ITEM item); @Override Collection<T_ITEM> getUpdatedItems(); void registerUpdatedItem(T_ITEM item, boolean isUpdated); @Override Selection<T_ITEM> getRemovedItems(); void setRemovedItems(Selection<T_ITEM> removedItems); @SuppressWarnings("unchecked") @Override ModificationsImpl<T_ITEM> clone(); @Override String toString();  }
@Test public void testClone() { Modifications<String> m = modifAbc.clone(); assertEquals("{added: 1, updated: 1, removed: 1}", m.toString()); }