public override Edit Reverse()
            {
                switch (action)
                {
                case ICollectionEditAction.AddItem:
                    collection.Remove(item);
                    action = ICollectionEditAction.RemoveItem;
                    break;

                case ICollectionEditAction.RemoveItem:
                    collection.Add(item);
                    action = ICollectionEditAction.AddItem;
                    break;
                }
                return(this);
            }
 public ICollectionEdit(ICollectionEditAction action, ICollection <T> collection, T item)
 {
     this.action     = action;
     this.collection = collection;
     this.item       = item;
 }