         private function getGridColumn(columnIndex:int):GridColumn
         {
             const columns:IList = columns;
-            if ((columns == null) || (columnIndex >= columns.length))
+            if ((columns == null) || (columnIndex <= 0) || (columnIndex >= columns.length))
                 return null;
             
             return columns.getItemAt(columnIndex) as GridColumn;

        
        //--------------------------------------------------------------------------
        //
        //  GridLayout Cover Methods
        //
        //--------------------------------------------------------------------------
        
        /**
         *  @copy spark.components.supportClasses.GridLayout#getVisibleRowIndices()
         *  

        {
            gridSelection.preserveSelection = value;
        }
		
		
		//----------------------------------
		//  requestedMinRowCount
		//----------------------------------
		
		private var _requestedMinRowCount:int = -1;
		
		[Inspectable(category="General", minValue="-1")]
		
		/**
		 *  The measured height of this grid will be large enough to display 
		 *  at least <code>requestedMinRowCount</code> rows.
		 * 
		 *  <p>If <code>requestedRowCount</code> is set, then
		 *  this property has no effect.</p>
		 *
		 *  <p>If the actual size of the grid has been explicitly set,
		 *  then this property has no effect.</p>
		 *
		 *  @default -1
		 *  
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion Flex 4.5
		 */
		public function get requestedMinRowCount():int
		{
			return _requestedMinRowCount;
		}
		
		/**
		 *  @private
		 */
		public function set requestedMinRowCount(value:int):void
		{
			if (_requestedMinRowCount == value)
				return;
			
			_requestedMinRowCount = value;
			invalidateSize();
		}    
		
		//----------------------------------
		//  requestedRowCount
		//----------------------------------
		
		private var _requestedRowCount:int = -1;
		
		[Inspectable(category="General", minValue="-1")]
		
		/**
		 *  The measured height of this grid will be large enough to display 
		 *  the first <code>requestedRowCount</code> rows. 
		 * 
		 *  <p>If <code>requestedRowCount</code> is -1, then the measured
		 *  size will be big enough for all of the layout elements.</p>
		 * 
		 *  <p>If the actual size of the grid has been explicitly set,
		 *  then this property has no effect.</p>
		 * 
		 *  @default -1
		 *  
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion Flex 4
		 */
		public function get requestedRowCount():int
		{
			return _requestedRowCount;
		}
		
		/**
		 *  @private
		 */
		public function set requestedRowCount(value:int):void
		{
			if (_requestedRowCount == value)
				return;
			
			_requestedRowCount = value;
            invalidateSize();
		}
		
		
		//----------------------------------
		//  requestedMinColumnCount
		//----------------------------------
		
		private var _requestedMinColumnCount:int = -1;
		
		[Inspectable(category="General", minValue="-1")]
		
		/**
		 *  The measured width of this grid will be large enough to display 
		 *  at least <code>requestedMinColumnCount</code> columns.
		 * 
		 *  <p>If <code>requestedColumnCount</code> is set, then
		 *  this property has no effect.</p>
		 *
		 *  <p>If the actual size of the grid has been explicitly set,
		 *  then this property has no effect.</p>
		 * 
		 *  @default -1
		 *  
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion Flex 4.5
		 */
		public function get requestedMinColumnCount():int
		{
			return _requestedMinColumnCount;
		}
		
		/**
		 *  @private
		 */
		public function set requestedMinColumnCount(value:int):void
		{
			if (_requestedMinColumnCount == value)
				return;
			
			_requestedMinColumnCount = value;
	        invalidateSize();
		}   
		
		//----------------------------------
		//  requestedColumnCount
		//----------------------------------
		
		private var _requestedColumnCount:int = -1;
		
		[Inspectable(category="General", minValue="-1")]
		
		/**
		 *  The measured width of this grid will be large enough to display 
		 *  the first <code>requestedColumnCount</code> columns. 
		 *  If <code>requestedColumnCount</code> is -1, then the measured
		 *  width will be big enough for all of the columns.
		 * 
		 *  <p>If the actual size of the grid has been explicitly set,
		 *  then this property has no effect.</p>
		 * 
		 *  @default -1
		 *  
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion Flex 4.5
		 */
		public function get requestedColumnCount():int
		{
			return _requestedColumnCount;
		}
		
		/**
		 *  @private
		 */
		public function set requestedColumnCount(value:int):void
		{
			if (_requestedColumnCount == value)
				return;
			
			_requestedColumnCount = value;
		    invalidateSize();
		}    
        
        //----------------------------------
        //  requireSelection
