 import flash.events.MouseEvent;
 import flash.geom.Point;
 import flash.geom.Rectangle;
+import flash.utils.Dictionary;
 
 import mx.collections.ArrayList;
 import mx.collections.IList;

    }
    
    //----------------------------------
    //  preserveSelection (delegates to gridSelection.preserveSelection)
    //----------------------------------
    

        if (!inUpdateDisplayList)
            super.invalidateDisplayList();
    }
    
    /**
     *  Used to create a default value for the layers property in commitProperties below.
     */
    private function createLayer(id:String):GridLayer
    {
        const layer:GridLayer = new GridLayer();
        layer.id = id;
        if (id == "rendererLayer")
            layer.root = this;
        return layer;
    }

    /**
     *  @private
     */
    override protected function commitProperties():void
    {
        // Create a default layers vector if necessary
        if (_layers == null)
        {
            layers = new <GridLayer> [
                createLayer("backgroundLayer"), 
                createLayer("selectionLayer"), 
                createLayer("rendererLayer"),
                createLayer("overlayLayer")]
        }
                
        // rowHeight and variableRowHeight can be set in either order
        if (variableRowHeightChanged || rowHeightChanged)
        {
