         while intactRange.domStart > domPosition
           currentLine = killLine(currentLine)
           domPosition++
-        for i in [intactRange.from..intactRange.to]
+        for i in [intactRange.start..intactRange.end]
           currentLine = currentLine.nextSibling
           domPosition++
       while currentLine


  handleScreenLinesChange: (e) ->
    { oldRange, newRange } = e
    from = oldRange.start.row
    to = oldRange.end.row
    delta = newRange.end.row - oldRange.end.row

    if bufferChange = e.bufferChange
      bufferDelta = bufferChange.newRange.end.row - bufferChange.oldRange.end.row

    @pendingChanges.push({from, to, delta, bufferDelta})
    @requestDisplayUpdate()

  buildLineElementForScreenRow: (screenRow) ->

  computeIntactRanges: ->
    return [] if !@firstRenderedScreenRow? and !@lastRenderedScreenRow?

    intactRanges = [{start: @firstRenderedScreenRow, end: @lastRenderedScreenRow, domStart: 0}]
    for change in @pendingChanges
      newIntactRanges = []
      for range in intactRanges
        if change.end < range.start and change.screenDelta != 0
          newIntactRanges.push(
            start: range.start + change.screenDelta
            end: range.end + change.screenDelta
            domStart: range.domStart
          )
        else if change.end < range.start or change.start > range.end
          newIntactRanges.push(range)
        else
          if change.start > range.start
            newIntactRanges.push(
              start: range.start
              end: change.start - 1
              domStart: range.domStart)
          if change.end < range.end
            newIntactRanges.push(
              start: change.end + change.screenDelta + 1
              end: range.end + change.screenDelta
              domStart: range.domStart + change.end + 1 - range.start
            )
      intactRanges = newIntactRanges
    @pendingChanges = []
