         overwrittenArea = [replacedText, rest...].join("")
         overwritten
 
-    overwrittenByEditor.get(@editor)[@selectionIndex] = overwrittenArea
+    state.overwritten[@selectionIndex] = overwrittenArea
     replacedText
 
   isLinewise: ->

      selections = @editor.getSelectionsOrderedByBufferPosition()
      topSelection = selections[0]
      selections.reverse() if @direction is 'down'
      @initOverwrittenByEditor()
      @editor.transact =>
        @countTimes =>
          return if (not @isLinewise()) and (not @isMovable(topSelection))

swrap = requireFrom('vim-mode-plus', 'selection-wrapper')

CommandPrefix = 'vim-mode-plus-user'

newState = ->
  {
    selectedTexts: null
    checkpoint: null
    overwritten: null
  }

stateByEditor = new Map
disposableByEditor = new Map

# -------------------------
class MoveSelectedText extends TransformString
