 
   # Return true unless all selection is empty.
   selectTarget: ->
-    isSelect = @instanceof('Select')
-    useMarker = @needStay() and @stayByMarker
-    @mutationManager.init({isSelect, useMarker})
+    @mutationManager.init
+      isSelect: @instanceof('Select')
+      useMarker: @needStay() and @stayByMarker
     @mutationManager.setCheckPoint('will-select')
 
-    @target.forceWise(@wise) if @wise and @target.isMotion()
+    # Currently only motion have forceWise methods
+    @target.forceWise?(@wise) if @wise?
     @emitWillSelectTarget()
 
-    # To use CURRENT cursor position, this has to be BEFORE @target.select() which move cursors.
-    if @isOccurrence() and not @occurrenceManager.hasMarkers()
-      @addOccurrencePattern()
-
     @target.select()
-    if @isOccurrence()
-      @selectOccurrence()
+    @selectOccurrence() if @isOccurrence()
 
     if haveSomeNonEmptySelection(@editor) or @target.getName() is "Empty"
       @mutationManager.setCheckPoint('did-select')

    @activateMode('normal')

  selectOccurrence: ->
    @addOccurrencePattern() unless @occurrenceManager.hasMarkers()

    # To repoeat(`.`) operation where multiple occurrence patterns was set.
    # Here we save patterns which resresent unioned regex which @occurrenceManager knows.

  isOccurrence: ->
    @occurrence

  setOccurrence: (@occurrence) ->
    @occurrence

  setMarkForChange: (range) ->
    @vimState.mark.setRange('[', ']', range)

