     
     /**
      *  @private
+     *  Keeps track of whether the caret should change when selection changes. 
+     *  By default it is true
+     */
+    mx_internal var changeCaretOnSelection:Boolean = true;
+    
+    /**
+     *  @private
      *  Internal storage for the selectedIndex property.
      */
     mx_internal var _selectedIndex:int = NO_SELECTION;

            dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
            
            //Dispatch the caretChange event 
            e = new IndexChangeEvent(IndexChangeEvent.CARET_CHANGE); 
            e.oldIndex = oldCaretIndex; 
            e.newIndex = caretIndex; 
            dispatchEvent(e);
        }
        
        return true;
     }

            itemSelected(oldSelectedIndex, false);
        if (_selectedIndex != NO_SELECTION && _selectedIndex != CUSTOM_SELECTED_ITEM)
            itemSelected(_selectedIndex, true);
        if (changeCaretOnSelection)
            setCurrentCaretIndex(_selectedIndex); 

        // Step 4: dispatch the "change" event and "caretChange" 
        // events based on the dispatchChangeEvents parameter. Overrides may  
