     private function updateRenderer(renderer:IVisualElement, data:Object):void
     {
         if (!renderer)
-           return; 
+           return;
+
+        // keep track of whether we are actively updating an renderers 
+        // so we can ignore any collectionChange.UPDATE events
+        renderersBeingUpdated = true;
         
         //Set the data    
         if ((renderer is IDataRenderer) && (renderer != data))
-            IDataRenderer(renderer).data = data;   
+            IDataRenderer(renderer).data = data;
         
         //Newly created renderer with no owner, set owner to this     
         if (!renderer.owner)

    }
    
    /**
     *  @private 
     *  Sets the renderer's data, owner and labelText properties. 
     *  Then, gives the "true" owner a chance to call update the 

        //owner a chance to update the renderer. 
        else if (renderer.owner != this)
            IItemRendererOwner(renderer.owner).updateRenderer(renderer);
        
        // technically if this got called "recursively", this renderersBeingUpdated flag
        // would be prematurely set to false, but in most cases, this check should be 
        // good enough.
        renderersBeingUpdated = false;
    }

    
