 
   setReversedState: (reversed) ->
     return if @selection.isReversed() is reversed
-    {head, tail, wise} = @getProperties()
-    if head? and tail?
+
+    if @hasProperties()
+      {head, tail, wise} = @getProperties()
       @setProperties(head: tail, tail: head, wise: wise)
 
     options = {autoscroll: true, reversed, preserveFolds: true}

      properties.tail.column = tailMaxColumn

  captureProperties: ->
    head: @selection.getHeadBufferPosition()
    tail: @selection.getTailBufferPosition()

  selectByProperties: ({head, tail}) ->
    # No problem if head is greater than tail, Range constructor swap start/end.
    @setBufferRange([tail, head])
    @setReversedState(head.isLessThan(tail))

  # Return true if selection was non-empty and non-reversed selection.


  restoreFromProperties: ->
    return unless @hasProperties()
    @withKeepingGoalColumn =>
      @selectByProperties(@getProperties())

  # Only for setting autoscroll option to false by default
  setBufferRange: (range, options={}) ->
