     @linesByDelta('bufferDelta', startRow, endRow)
 
   bufferLineCount: ->
-    @traverseByDelta('bufferDelta', new Point(Infinity, 0)).bufferDelta.row
+    @lineCountByDelta('bufferDelta')
 
   screenLineCount: ->
-    @traverseByDelta('screenDelta', new Point(Infinity, 0)).screenDelta.row
+    @lineCountByDelta('screenDelta')
+
+  lineCountByDelta: (deltaType) ->
+    @traverseByDelta(deltaType, new Point(Infinity, 0))[deltaType].row
 
   lastScreenRow: ->
     @screenLineCount() - 1

      sourcePosition.row = 0
      sourcePosition.column = 0

    traversalResult = @traverseByDelta(sourceDeltaType, sourcePosition)
    lastLineFragment = traversalResult.lastLineFragment
    sourceDelta = traversalResult[sourceDeltaType]

    new Range(start, end)

  clipScreenPosition: (screenPosition, options) ->
    @translatePosition('screenDelta', 'screenDelta', screenPosition, options)

  spliceByDelta: (deltaType, startRow, rowCount, lineFragments) ->
