        not @hasChanged
       return
 
+    maxCellCount = ((lastVisibleRow - firstVisibleRow) + @getRowOverdraw() * 2) * ((lastVisibleColumn - firstVisibleColumn) + @getColumnOverdraw() * 2)
+
     rowOverdraw = @getRowOverdraw()
     firstRow = Math.max 0, firstVisibleRow - rowOverdraw
     lastRow = Math.min @tableEditor.getScreenRowCount(), lastVisibleRow + rowOverdraw


      @appendGutterCell(row) for row in visibleRows

    else if firstRow isnt @firstRenderedRow or lastRow isnt @lastRenderedRow or firstColumn isnt @firstRenderedColumn or lastColumn isnt @lastRenderedColumn
      disposed = 0
      created = 0


  getScreenCellAtPosition: (position) ->
    position = Point.fromObject(position)
    @cells[position.row + '-' + position.column]

  appendCell: (row, column) ->
    key = row + '-' + column
    @cells[key] ? @cells[key] = @requestCell(@getCellObjectAtPosition([row, column]))

  getCellObjectAtPosition: (position) ->
    {row, column} = Point.fromObject(position)
