     
     /**
      *  @private
+     *  Used to filter _proposedSelectedIndices.
+     */
+    private function isValidIndex(item:int, index:int, v:Vector.<int>):Boolean
+    {
+        return (dataProvider != null) && (item >= 0) && (item < dataProvider.length); 
+    }
+    
+    /**
+     *  @private
      *  Let ListBase handle single selection and afterwards come in and 
      *  handle multiple selection via the commitMultipleSelection() 
      *  helper method. 


        var oldSelectedIndex:Number = _selectedIndex;
        var oldCaretIndex:Number = _caretIndex;  
               
        // Ensure that multiple selection is allowed and that proposed 
        // selected indices honors it. For example, in the single 

import flash.text.TextField;
import flash.ui.Keyboard;

import mx.collections.IList;
import mx.core.DragSource;
import mx.core.EventPriority;
import mx.core.IFactory;
