 
     intersectingRange
 
-  updateHighlightState: (decoration) ->
+  updateHighlightState: (decoration, range) ->
     return unless @startRow? and @endRow? and @lineHeight? and @hasPixelPositionRequirements()
 
     properties = decoration.getProperties()
     marker = decoration.getMarker()
-    range = marker.getScreenRange()
 
     if decoration.isDestroyed() or not marker.isValid() or range.isEmpty() or not range.intersectsRowRange(@startRow, @endRow - 1)
       return

        if decoration.isType('line') or decoration.isType('gutter')
          @addToLineDecorationCaches(decoration, range)
        else if decoration.isType('highlight')
          @updateHighlightState(decoration)

    for tileId, tileState of @state.content.tiles
      for id, highlight of tileState.highlights


  updateCursorState: (cursor) ->
    return unless @startRow? and @endRow? and @hasPixelRectRequirements() and @baseCharacterWidth?
    screenRange = cursor.getScreenRange()
    return unless cursor.isVisible() and @startRow <= screenRange.start.row < @endRow

    pixelRect = @pixelRectForScreenRange(screenRange)
    pixelRect.width = @baseCharacterWidth if pixelRect.width is 0
    @state.content.cursors[cursor.id] = pixelRect

