      */
     mx_internal function itemRemoved(item:Object, index:int):void
     {       
-        var myItemRenderer:IVisualElement = IVisualElement(super.getChildAt(index));
+        var myItemRenderer:IVisualElement = itemToRenderer[item];
+        delete itemToRenderer[item];
         
         dispatchEvent(new ItemExistenceChangedEvent(
                       ItemExistenceChangedEvent.ITEM_REMOVE, false, false, 

                    createdIR = true;
                }
                
                renderersInView[item] = elt;  // weak reference
            }

            addItemRendererToDisplayList(DisplayObject(elt), index - virtualLayoutOffset);

     */
    override public function getLayoutElementAt(index:int):ILayoutElement
    {
        if (dataProvider == null)
            return null;
            
        var item:Object = dataProvider.getItemAt(index);
        var elt:IVisualElement = itemToRenderer[item];
        
        if (virtualLayoutUnderway)
        {
            var createdIR:Boolean = false;
            var recycledIR:Boolean = false;
                        
            if (!elt)
            {
                var recyclingOK:Boolean = (itemRendererFunction == null) && (itemRenderer != null); 
