             
             for (var i:int = 0; i < count; i++)
             {
-                // FIXME (dsubrama): What exactly should we do if an 
-                //invalid item is in the selectedItems vector? 
                 var index:int = dataProvider.getItemIndex(value[i]);
                 if (index != -1)
                 { 
                     indices.splice(0, 0, index);   
                 }
+                // If an invalid item is in the selectedItems vector,
+                // we set selectedItems to an empty vector, which 
+                // essentially clears selection. 
                 if (index == -1)
                 {
                     indices = new Vector.<int>();

            // commitProperties, the caretIndex will be adjusted to 
            // match the selectedIndex; 
            
            // FIXME (dsubrama): We should revisit the synchronous nature of the 
            // de-careting/re-careting behavior.
            itemShowingCaret(caretIndex, false); 
            caretIndexAdjusted = true; 

            return; 
            
        // Delegate to the layout to tell us what the next item is we should select or focus into.
        // TODO (dsubrama): At some point we should refactor this so we don't depend on layout
        // for keyboard handling. If layout doesn't exist, then use some other keyboard handler
        var proposedNewIndex:int = layout.getNavigationDestinationIndex(caretIndex, navigationUnit, arrowKeysWrapFocus); 
        
        // Note that the KeyboardEvent is canceled even if the current selected or in focus index
        // doesn't change because we don't want another component to start handling these
        // events when the index reaches a limit.
