         if (!isEmpty(_proposedSelectedIndices))
             _proposedSelectedIndex = getFirstItemValue(_proposedSelectedIndices); 
         
+        // need to store changeCaretOnSelection since super.commitSelection() may change it
+        var currentChangeCaretOnSelection:Boolean = changeCaretOnSelection;
+        
         // Let ListBase handle the validating and commiting of the single-selection
         // properties.  
         var retVal:Boolean = super.commitSelection(false); 


            dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
            
            e = new IndexChangeEvent(IndexChangeEvent.CARET_CHANGE); 
            e.oldIndex = oldCaretIndex; 
            e.newIndex = caretIndex;
            dispatchEvent(e);    
        }
        
        return retVal; 

        commitMultipleSelection(); 
        
        // Set the caretIndex based on the current selection 
        if (currentChangeCaretOnSelection)
            setCurrentCaretIndex(selectedIndex);
        
        // And dispatch change and caretChange events so that all of 
        // the bindings update correctly. 
