     {
         include "../core/Version.as";
         
+        /**
+         *  @private
+         *  A list of functions to be called at commitProperties() time, after the dataProvider
+         *  has been set.  This list is used to defer making grid selection updates per the 
+         *  set methods for the selectedIndex, selectedIndices, selectedItem, selectedItems, 
+         *  selectedCell and selectedCells properties.
+         */
+        private const deferredOperations:Vector.<Function> = new Vector.<Function>();
+        
+        /**
+         *  @private
+         *  True while updateDisplayList is running.
+         */
+        private var inUpdateDisplayList:Boolean = false;
+        
+        
+        // TODO(hmuller): the following public variables are temporary 
+        
         public var backgroundGroup:Group;
         public var selectionGroup:Group;    
         public var itemRendererGroup:Group;
         public var overlayGroup:Group;
         
-        private var inUpdateDisplayList:Boolean = false;
         
         public function Grid()
         {

        {
            return gridSelection.allRows();
        }
        
        //----------------------------------
        //  selectedItem

           
            return items;
        }
        
        /**
         *  @private
         */
        public function set selectedItems(value:Vector.<Object>):void
        {
            // Defensively copy the incoming value; tolerate value=null
            
            const valueCopy:Vector.<Object> = (value) ? value.concat() : new Vector.<Object>(0);
            
            // Append a deferred operation function that selects the specified indices            
            
            var f:Function = function():void
            {
                if (!dataProvider)
                    return;
                
                clearSelection();
                for each (var item:Object in valueCopy)
                    addSelectedIndex(dataProvider.getItemIndex(item));
            }
            deferredOperations.push(f);  // function f() to be called by commitProperties()
            invalidateProperties();
        }        
        
        //----------------------------------
        //  selectionIndicator
