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);
}