         doingWholesaleChanges = true;
         
         super.dataProvider = value;
+        invalidateProperties();
         
         if (dataProvider)
             dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);

            // or should we preserve selectedIndex
            if (selectedIndex >= 0 && dataProvider && selectedIndex < dataProvider.length)
               itemSelected(selectedIndex, true);
            else
               selectedIndex = -1;
        }

            _proposedSelectedIndex = maxIndex;
        if (requiresSelection && _proposedSelectedIndex == NO_SELECTION && 
            dataProvider && dataProvider.length > 0)
        {
            _proposedSelectedIndex = NO_PROPOSED_SELECTION;
            return false;
        }
        
        // Step 2: dispatch the "selectionChanging" event. If preventDefault() is called
        // on this event, the selection change will be cancelled.
