     public function getRowBounds(row:int):Rectangle
     {
         // TBD: provide optional return value (Rectangle) parameter    
-        if ((row < 0) || (row >= rowCount))
+        if ((row < 0) || (row >= _rowCount))
             return null;  // TBD: return empty Rectangle instead
+        
+        if (_columnCount == 0 || _rowCount == 0)
+            return new Rectangle(0, 0, 0, 0);
         
         const x:Number = getCellX(row, 0);
         const y:Number = getCellY(row, 0);
-        const rowWidth:Number = getCellX(row, columnCount - 1) + getColumnWidth(columnCount - 1) - x;
+        const rowWidth:Number = getCellX(row, _columnCount - 1) + getColumnWidth(_columnCount - 1) - x;
         const rowHeight:Number = getRowHeight(row);
         return new Rectangle(x, y, rowWidth, rowHeight);
     }

    public function getColumnBounds(col:int):Rectangle
    {
        // TBD: provide optional return value (Rectangle) parameter
        if ((col < 0) || (col >= columnCount))
            return null;  // TBD: return empty Rectangle instead

        const x:Number = getCellX(0, col);
        const y:Number = getCellY(0, col);
        const colWidth:Number = getColumnWidth(col);
        const colHeight:Number = getCellY(rowCount - 1, col) + getCellHeight(rowCount - 1, col) - y;
        return new Rectangle(x, y, colWidth, colHeight);
    }
    

    {
        typicalCellWidths.length = 0;
        typicalCellHeights.length = 0;
        defaultRowHeight = 26;
        isFirstTypicalCellHeight = true;
    }
        
