internal LiveShapingItem(object item, LiveShapingList list, bool filtered=false, LiveShapingBlock block=null, bool oneTime=false)
        {
            _block = block;

            list.InitializeItem(this, item, filtered, oneTime);

            ForwardChanges = !oneTime;
        }
        void RebuildListsCore()
        {
            _cachedList = new ArrayList(InternalList);
            LiveShapingList lsList = _shadowList as LiveShapingList;

            if (lsList != null)
                lsList.LiveShapingDirty -= new EventHandler(OnLiveShapingDirty);

            if (_isGrouping && IsLiveGrouping == true)
            {
                _shadowList = lsList = new LiveShapingList(this, GetLiveShapingFlags(), ActiveComparer);

                foreach (object item in InternalList)
                {
                    lsList.Add(item);
                }

                lsList.LiveShapingDirty += new EventHandler(OnLiveShapingDirty);
            }
            else if (AllowsCrossThreadChanges)
            {
                _shadowList = new ArrayList(InternalList);
            }
            else
            {
                _shadowList = null;
            }
        }