     
     /**
      *  Boolean flag controlling whether multiple selection
-     *  is enabled or not. 
+     *  is enabled or not. When switched dynamically, selection
+     *  is cleared. 
      *
      *  @default false
      *  

            return;

        var spDelta:Point = layout.getScrollPositionDeltaToElement(index);
        if (spDelta)
        { 
            horizontalScrollPosition += spDelta.x;
            verticalScrollPosition += spDelta.y;
        }

        
        if (dataProvider)
        {
            var currentIndex:Number; 
            if (allowMultipleSelection && selectedIndices && selectedIndices.length > 0)
            {
                currentIndex = selectedIndices[selectedIndices.length - 1]; 
            }
            else currentIndex = selectedIndex;  
            
	        //Delegate to the layout to tell us what the next item is we should select.
	        var proposedSelectedIndex:int = layout.nextItemIndex(event.keyCode, currentIndex, dataProvider.length - 1); 
	        
	        // Note that the KeyboardEvent is canceled even if the selectedIndex doesn't
            // change because we don't want another component to start handling these
            // events when the selectedIndex reaches a limit.
            if (proposedSelectedIndex != -1)
            {
                event.preventDefault(); 
                if (allowMultipleSelection && event.shiftKey && selectedIndices)
                {
                    var newInterval:Array = []; 
                    var i:int; 
                    //contiguous multi-selection action - create the new selection
                    //interval
                    if (selectedIndex <= proposedSelectedIndex)
                    {
                        for (i = selectedIndex; i <= proposedSelectedIndex; i++)
                        {
                            newInterval.push(i); 
                        }
                    }
                    else 
                    {
                        for (i = selectedIndex; i >= proposedSelectedIndex; i--)
                        {
                            newInterval.push(i); 
                        }
                    }
                    selectedIndices = newInterval;   
                    ensureItemIsVisible(proposedSelectedIndex); 
                }
                else
                {
                    //simple new selection 
                    selectedIndex = proposedSelectedIndex; 
                    ensureItemIsVisible(proposedSelectedIndex);
                } 
            } 
		}
    }
