             }
             else if (elt)
             {
-                dispatchEvent(new RendererExistenceEvent(RendererExistenceEvent.RENDERER_REMOVE, false, false, elt, index, item));
+                dispatchEvent(new RendererExistenceEvent(RendererExistenceEvent.RENDERER_REMOVE, false, false, elt, vrIndex, item));
                 super.removeChild(DisplayObject(elt));
             }
         }
-
+        
         // If there are any visible renderers whose depth property is non-zero
         // then use manageDisplayObjectLayers to resort the children list.  Note:
         // we're assuming that the layout has set the bounds of any elements that
         // were allocated but aren't actually visible to 0x0.
         
-        if (virtualLayoutStartIndex < 0 || virtualLayoutEndIndex < 0)
-            return;
-        
         var depthSortRequired:Boolean = false;
-        for (index = virtualLayoutStartIndex; index < virtualLayoutEndIndex; index++)
-        {
-            elt = indexToRenderer[index] as IVisualElement;
+        for each (vrIndex in virtualRendererIndices)
+        {
+            elt = indexToRenderer[vrIndex] as IVisualElement;
             if (!elt || !elt.visible || !elt.includeInLayout)
                 continue;
             if ((elt.width == 0) || (elt.height == 0))

    //  Overridden properties
    //
    //--------------------------------------------------------------------------

    //----------------------------------
    //  baselinePosition
    //----------------------------------

    /**
     *  @inheritDoc
     *  

        if (!virtualLayoutUnderway)
            super.invalidateSize();
    }
    
    /**
     *  @private 
     *  Make sure there's a valid typicalLayoutElement for virtual layout.
