   getSelectedBufferRangesForCheckpoint: (checkpoint) ->
     ranges = []
     @mutationsBySelection.forEach (mutation) ->
-      if range = mutation.getBufferRangeForCheckpoint(checkpoint)
+      if range = mutation.bufferRangeByCheckpoint[checkpoint]
         ranges.push(range)
     ranges
 

    point = Point.max(start, end.translate([0, -1]))
    @selection.editor.clipBufferPosition(point)

  getInitialPoint: ({clip, wise}={}) ->
    point = @initialPointMarker?.getHeadBufferPosition() ? @initialPoint
    clip ?= not @getBufferRangeForCheckpoint('did-select')?.isEqual(@marker.getBufferRange())
    if clip
      if wise is 'linewise'
        Point.min([@getEndBufferPosition().row, point.column], point)
      else

        # Make sure destroying all temporal selection BEFORE starting to set cursors to final position.
        # This is important to avoid destroy-order dependent bugs.
        for selection in @editor.getSelections() when mutation = @mutationsBySelection.get(selection)
          if mutation.createdAt isnt 'will-select'
            selection.destroy()

      for selection in @editor.getSelections() when mutation = @mutationsBySelection.get(selection)
