      */ 
     protected function addItemRendererToDisplayList(child:DisplayObject, index:int = -1):DisplayObject
     { 
-        // TODO: do we need this case (parented by me previously)?
+        // If this child is already an element of the display list, ensure
+        // that it's at the specified index
         if (child.parent && child.parent == this)
         {
             var insertIndex:int;

     */
    override public function getLayoutElementAt(index:int):ILayoutElement
    {
        var itemRendererIndex:int = index - virtualLayoutOffset;
        var itemRenderer:Object = mx_internal::getRendererForItemAt(itemRendererIndex);

        if (layout && layout.virtualLayout)
        {
            // Note: the code below does most of the same work as itemAdded()
            var item:Object = dataProvider.getItemAt(index);
            var createdIR:Boolean = false;
            
            if (!itemRenderer)
            {
                itemRenderer = createRendererForItem(item);
                createdIR = true;
            }

            if (itemRenderer.parent != this)
                addItemRendererToDisplayList(DisplayObject(itemRenderer), itemRendererIndex);
            else
                super.setChildIndex(DisplayObject(itemRenderer), itemRendererIndex);
            
            if (createdIR)
            {
                if (itemRenderer is IInvalidating)
                    IInvalidating(itemRenderer).validateNow();
                // TBD sync with itemAdded
                dispatchEvent(new ItemExistenceChangedEvent(ItemExistenceChangedEvent.ITEM_ADD, false, false, item));
            }
        }

        return LayoutElementFactory.getLayoutElementFor(itemRenderer);

        // size or display list.
        for(var i:int = super.numChildren - 1; i > (endIndex - startIndex); i--)
        {
            var itemRenderer:IVisualElement = IVisualElement(super.getChildAt(i));
            //trace("DataGroup::endVirtualLayout() removing " + IDataRenderer(itemRenderer).data);
            super.removeChildAt(i);
            var item:Object = (itemRenderer is IDataRenderer) ? IDataRenderer(itemRenderer).data : itemRenderer;
            delete virtualItemRenderers[item];
        }        
    }
    
    /**
