         
         // Step 3: commit the selection change
         if (_selectedIndex != NO_SELECTION)
-            itemSelected(dataProvider.getItemAt(_selectedIndex), false);
+            itemSelected(_selectedIndex, false);
         if (_proposedSelectedIndex != NO_SELECTION)
-            itemSelected(dataProvider.getItemAt(_proposedSelectedIndex), true);
+            itemSelected(_proposedSelectedIndex, true);
         _selectedIndex = _proposedSelectedIndex;
         _proposedSelectedIndex = NO_PROPOSED_SELECTION;
         

            // TODO: should resetting the dataProvider clear out all of its state?
            // or should we preserve selectedIndex
            if (selectedIndex >= 0 && dataProvider && selectedIndex < dataProvider.length)
               itemSelected(dataProvider.getItemAt(selectedIndex), true);
            else
               selectedIndex = -1;
        }

     *  Setting the <code>selectedIndex</code> property deselects the currently selected
     *  item and selects the item at the specified index.
     *
     *  <p>The value is always between -1 and (<code>dataProvider.length</code> - 1). 
     *  If items at a lower index than <code>selectedIndex</code> are 
     *  removed from the component, the selected index is adjusted downward
     *  accordingly.</p>
