                 IStyleClient(item).regenerateStyleCache(true);
         }   
         else
-        {           
-            var childIndex:int = -1;
-            
-            if (index == 0)
-            {
-                childIndex = 0; 
-            }
-            else if (index != numItems - 1)
-            {
-                for (var i:int = index - 1; i >= 0; i--)
-                {
-                    var prevItem:* = getItemAt(i);
-                    
-                    if (!(prevItem is GraphicElement))
-                    	prevItem = getItemSkin(prevItem);
-                    	
-                    if (prevItem is DisplayObject)
-                        childIndex = super.getChildIndex(DisplayObject(prevItem)) ;
-                    else if (prevItem is GraphicElement)
-                    {
-                        var prevElement:GraphicElement = prevItem as GraphicElement;
-                        if (prevElement.displayObject)
-                            childIndex = super.getChildIndex(prevElement.displayObject);
-                    }
-                    
-                    if (childIndex != -1)
-                    {
-                        childIndex++;
-                        break;
-                    }
-                    
-                }
-            }
-            
-            child = addItemToDisplayList(createVisualForItem(item), item, childIndex);
+        {     
+        	// 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(

            }
        }

        if (scrollPositionChanged) {
            scrollPositionChanged = false;
            var r:Rectangle = scrollRect;

import mx.core.IDataRenderer;
import mx.core.IDeferredInstance;
import mx.core.IFactory;
import mx.core.UIComponent;
import mx.core.mx_internal;
import mx.events.CollectionEvent;
import mx.events.PropertyChangeEvent;
import mx.events.PropertyChangeEventKind;
