protected override void SetItem(int index, Item item) { var existingItem = this[index]; if(item == existingItem) return; CheckParent(item); itemParentChanger(existingItem, null); base.SetItem(index, item); }