             count = removedItems.length;
             for (i = 0; i < count; i++)
             {
-                itemSelected(dataProvider.getItemAt(removedItems[i]), false);
+                itemSelected(removedItems[i], false);
             }
         }
         

    /**
     *  @private
     */
    override protected function itemSelected(item:Object, selected:Boolean):void
    {
        var item:Object = dataGroup.getItemRenderer(item);
        
        if (item)
        {
            if ("selected" in item)
                item.selected = selected;
            else
            {
                // TODO: localize below (and other messages)
                throw new Error("The item needs to support the \"selected\" property " + 
                        "for selection to work.  An easy way to accomplish this is by wrapping " + 
                        "your component in a DefaultComplexItemRenderer");
            }
        }
    }
        
    /**
     *  Returns true if the item is selected.
     */
    public function isItemSelected(item:Object):Boolean
    {
        if (allowMultipleSelection)
        {
            var itemIndex:int = dataProvider.getItemIndex(item);
            
            return selectedIndices.indexOf(itemIndex) != -1;
        }
        
        return item == selectedItem;
    }
        
    /**

     *  Called when an item has been removed from this component.
     */
    private function dataGroup_itemRemoveHandler(event:ItemExistenceChangedEvent):void
    {
        var index:int = event.index;
        var renderer:Object = event.renderer;
        
        if (renderer)
            renderer.removeEventListener("click", item_clickHandler);
