         for (var i:int = startIndex; i < len; i++)
         {  
             var item:* = getItemAt(i);
+            var insertIndex:int;
             
             if (!(item is GraphicElement)) 
                 item = getItemSkin(item);
             
+        	if (lastDisplayObject == this)
+        		insertIndex = 0;
+        	else
+        		insertIndex = super.getChildIndex(lastDisplayObject) + 1;
+        		
             if (item is DisplayObject)
             {
+            	super.setChildIndex(item as DisplayObject, insertIndex);
+            	
                 lastDisplayObject = item as DisplayObject;
                 // Null this out so that we are forced to create one for the next item
                 currentAssignableDO = null; 

        }
        
        assignDisplayObjects();
        
        /* if (maskElements)
        {

                IStyleClient(item).regenerateStyleCache(true);
        }   
        else
        {     
        	// This always adds the child to the end of the display list. Any 
        	// ordering discrepancies will be fixed up in assignDisplayObjects().
            child = addItemToDisplayList(createVisualForItem(item), item);
        }
        
        dispatchEvent(new ItemExistenceChangedEvent(
