protected virtual void ApplyCollectionItemRemove(ApplyingCollectionChangeBundle bundle) { var contentContentChange = bundle.ContentContentChange; var oldItems = contentContentChange.OldItems; if (oldItems is null) { throw new ArgumentException("No old content-content-items were given although a remove collection change action has been triggered."); } var oldItemsCount = oldItems.Count; var oldIndex = contentContentChange.OldIndex; for (var oldItemIndex = oldItemsCount - 1; oldItemIndex >= 0; oldItemIndex--) { var removeIndex = oldItemIndex + oldIndex; #if DEBUG var removingContent = ContentList[removeIndex]; var oldContent = oldItems[oldItemIndex]; if (!EqualityComparer.Equals(removingContent, oldContent)) { throw new Exception("Removing item is not equals old item that should be removed instead"); } #endif ItemList.RemoveAt(removeIndex); ContentList.RemoveAt(removeIndex); } }