protected override void ClearItems()
        {
            CheckReentrancy();

            TestBindableVector <T> oldItems = new TestBindableVector <T>(this);

            base.ClearItems();
            OnCollectionChanged(
                NotifyCollectionChangedAction.Reset,
                null, oldItems, 0, 0);
        }
        protected override void InsertItem(int index, T item)
        {
            CheckReentrancy();

            TestBindableVector <T> newItem = new TestBindableVector <T>();

            newItem.Add(item);

            base.InsertItem(index, item);
            OnCollectionChanged(
                NotifyCollectionChangedAction.Add,
                newItem, null, index, 0);
        }
        protected override void RemoveItem(int index)
        {
            CheckReentrancy();

            TestBindableVector <T> oldItem = new TestBindableVector <T>();

            oldItem.Add(this[index]);

            base.RemoveItem(index);
            OnCollectionChanged(
                NotifyCollectionChangedAction.Remove,
                null, oldItem, 0, index);
        }
        protected override void SetItem(int index, T item)
        {
            CheckReentrancy();

            TestBindableVector <T> oldItem = new TestBindableVector <T>();

            oldItem.Add(this[index]);
            TestBindableVector <T> newItem = new TestBindableVector <T>();

            newItem.Add(item);

            base.SetItem(index, item);
            OnCollectionChanged(
                NotifyCollectionChangedAction.Replace,
                newItem, oldItem, index, index);
        }
        protected virtual void MoveItem(int oldIndex, int newIndex)
        {
            CheckReentrancy();

            TestBindableVector <T> oldItem = new TestBindableVector <T>();

            oldItem.Add(this[oldIndex]);
            TestBindableVector <T> newItem = new TestBindableVector <T>(oldItem);

            T item = this[oldIndex];

            base.RemoveAt(oldIndex);
            base.InsertItem(newIndex, item);
            OnCollectionChanged(
                NotifyCollectionChangedAction.Move,
                newItem, oldItem, newIndex, oldIndex);
        }