     new Range(start, end)
 
   clipScreenPosition: (screenPosition, options) ->
-    screenPosition = Point.fromObject(screenPosition)
-    maxScreenRow = @lastScreenRow()
-    if screenPosition.row > maxScreenRow
-      screenPosition.row = maxScreenRow
-      screenPosition.column = Infinity
-
     @translatePosition('screenDelta', 'screenDelta', screenPosition, options)
 
   spliceByDelta: (deltaType, startRow, rowCount, lineFragments) ->

    @linesByDelta('bufferDelta', startRow, endRow)

  bufferLineCount: ->
    @traverseByDelta('bufferDelta', new Point(Infinity, 0)).bufferDelta.row

  screenLineCount: ->
    @traverseByDelta('screenDelta', new Point(Infinity, 0)).screenDelta.row

  lastScreenRow: ->
    @screenLineCount() - 1

      sourcePosition.row = 0
      sourcePosition.column = 0

    maxSourceRow = @lineCountByDelta(sourceDeltaType) - 1
    if sourcePosition.row > maxSourceRow
      sourcePosition.row = maxSourceRow
      sourcePosition.column = Infinity

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