private void ClearAndReset()
        {
            _collectionIndex.Clear();
            ClearWeakEventHandlers();
            _collectionToNode.Clear();
            _sourceToCollectionNode.Clear();

            RecordCurrentValues(_collectionIndex.TopLeft, this.Source);
            FireReset();
        }
        public void Clear_Always_RemovesAll()
        {
            CreateThreeLevelTree(1);

            var originalBottomLeft = _target.BottomLeft;

            _target.Clear();

            var newBottomLeft = _target.BottomLeft;

            Assert.AreSame(originalBottomLeft, _target.BottomLeft);
            Assert.AreSame(originalBottomLeft, _target.TopLeft);
            Assert.IsNull(_target.TopLeft.Below);
            Assert.IsNull(_target.TopLeft.Above);
            Assert.IsNull(_target.TopLeft.Next);
            Assert.IsNull(_target.TopLeft.Previous);
            Assert.AreEqual(_target.TopLeft.ItemsInNode, 0);
        }