     point = Point.max(start, end.translate([0, -1]))
     @selection.editor.clipBufferPosition(point)
 
-  getInitialPoint: ({clip, wise}={}) ->
+  getInitialPoint: (wise) ->
     point = @initialPointMarker?.getHeadBufferPosition() ? @initialPoint
-    clip ?= not @getBufferRangeForCheckpoint('did-select')?.isEqual(@marker.getBufferRange())
-    if clip
+    if not @bufferRangeByCheckpoint['did-select']?.isEqual(@marker.getBufferRange())
       if wise is 'linewise'
         Point.min([@getEndBufferPosition().row, point.column], point)
       else

    @bufferRangeByCheckpoint = {}
    @marker = null

  isCreatedAt: (checkpoint) ->
    @createdAt is checkpoint

  update: (checkpoint, marker) ->
    if marker?
      @marker?.destroy()

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

