         if (!allowMultipleSelection)
             return;
             
-        // ?? should we check to see if the selection changed?
+        if (_proposedSelectedIndices == value)
+            return; 
         
         multipleSelectionChanged = true;
         _proposedSelectedIndices = value;

    //----------------------------------
    
    private var _allowMultipleSelection:Boolean = false;
    
    /**
     *  Boolean flag controlling whether multiple selection

            super.selectedIndex = value;
            return;
        }
        if (value == selectedIndex)
            return; 
            
        selectedIndices = [value];
    }
    
    //----------------------------------
    //  selectedItem
    //----------------------------------
    
    [Bindable("selectionChanged")]
    /**
     *  @private
     */
    override public function get selectedItem():*
    {   
        if (!allowMultipleSelection)
            return super.selectedItem;
            
        if (_selectedIndices && _selectedIndices.length > 0)
            return dataProvider.getItemAt(_selectedIndices[0]); 
            
        return NO_SELECTION;
    }
    
    /**
     *  @private
     */
    override public function set selectedItem(value:*):void
    {
        if (!allowMultipleSelection)
        {
            super.selectedItem = value;
            return;
        }
        if (value == selectedItem)
            return; 
            
        selectedItems = [value];
    }
    
    
