                 virtualLayoutEndIndex = index;
             }
             else
-            { 
+            {
                 virtualLayoutStartIndex = Math.min(index, virtualLayoutStartIndex); 
                 virtualLayoutEndIndex = Math.max(index, virtualLayoutEndIndex);
             }

     */
    private function finishVirtualLayout():void
    {
        var lastValidChildIndex:int = virtualLayoutEndIndex - virtualLayoutStartIndex;
        
        // At this point, insertion of new IRs has pushed all of the unneeded IRs
        // past endIndex-startIndex.  Remove or recycle them without invalidating 
        // this DataGroup's size or display list.
        for(var i:int = super.numChildren - 1; i > lastValidChildIndex; i--)
        {
            var elt:IVisualElement = IVisualElement(super.getChildAt(i));
            
            // Skip IRs that are already on the free list, 
            if (freeRenderers && (freeRenderers.indexOf(elt) != -1))
                continue;

            // Remove previously "in view" IRs from the item=>IR table
            var item:Object = elt;
            if ((itemToRenderer[item] != elt) && (elt is IDataRenderer))
            {
                item = IDataRenderer(elt).data;
                IDataRenderer(elt).data = null;  // reduce probability of leaks
            }
            delete itemToRenderer[item];
              
            // Free or remove the IR.
            if ((item != elt) && (elt is IDataRenderer))
            {
                elt.visible = false;
                if (elt is UIComponent) 
                    UIComponent(elt).includeInLayout = false;

            
            if (!elt)
            {
                var item:Object = dataProvider.getItemAt(index);
                var recyclingOK:Boolean = (itemRendererFunction == null) && (itemRenderer != null);
                
                if (recyclingOK && (freeRenderers.length > 0))
                {
                    elt = freeRenderers.pop();
