         super.commitProperties(); 
         
         if (multipleSelectionChanged)
-        {
+			// multipleSelectionChanged flag is cleared in commitSelection();
+			// this is so, because commitSelection() could be called from
+			// super.commitProperties() as well and in that case we don't
+			// want to commitSelection() twice, as that will actually wrongly 
+			// clear the selection.
             commitSelection(); 
-            multipleSelectionChanged = false; 
-        }
     }
     
     /**

            validateProperties();

        // Handle any drag gestures that may have been started
        if (!dragEnabled || this.selectedIndices.indexOf(newIndex) == -1)
            return;
        
        mouseDownPoint = event.target.localToGlobal(new Point(event.localX, event.localY));

     */
    override protected function commitSelection(dispatchChangedEvents:Boolean = true):Boolean
    {
		// Clear the flag so that we don't commit the selection again.
		multipleSelectionChanged = false;

        var oldSelectedIndex:Number = _selectedIndex;
        var oldCaretIndex:Number = _caretIndex;  
        
