     
     /**
      *  @private
+     *  Let ListBase handle single selection, but we want to make 
+     *  sure we keep the multiple selection properties in-sync 
+     *  correctly.  
+     */
+    override protected function commitSelectedIndex():Boolean
+    {
+        var retVal:Boolean = super.commitSelectedIndex(); 
+        
+        if (_selectedIndex != NO_SELECTION)
+            selectedIndices = [_selectedIndex]; 
+        
+        return retVal; 
+    }
+    
+    /**
+     *  @private
      */
     override protected function itemSelected(index:int, selected:Boolean):void
     {

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


        var navigationUnit:uint = mapEventToNavigationUnit(event);    
        
        if (!dataProvider || !layout || navigationUnit == NavigationUnit.NONE)
            return;

        var currentIndex:Number = selectedIndex; 
            
        // Delegate to the layout to tell us what the next item is we should select or focus into.
        // TODO (jszeto) At some point we should refactor this so we don't depend on layout
        // for keyboard handling. If layout doesn't exist, then use some other keyboard handler
        var proposedNewIndex:int = (selectUponNavigation) ? layout.getDestinationIndex(navigationUnit, currentIndex)
            : layout.getDestinationIndex(navigationUnit, currentCaretIndex);   
        
        // TODO (jszeto) proposedNewIndex depends on CTRL key
        // move CTRL key logic into single selection
        // add SPACE logic - add to selection for multi-select or change selection for single-select

        // Note that the KeyboardEvent is canceled even if the current selected or in focus index
        // doesn't change because we don't want another component to start handling these
