     isSequential = state.selectedTexts is @getSelectedTexts()
     unless isSequential
       state.checkpoint = @editor.createCheckpoint()
-      state.overwritten = null
+      state.overwrittenBySelection = null
 
     unless state.overwrittenBySelection?
       state.overwrittenBySelection = @getOverwrittenBySelection()

      spaces = _.multiplyString(' ', fillCount)
      @editor.setTextInBufferRange([eol, eol], spaces)

  # Linewise
  # -------------------------
  moveLinewise: (selection) ->
    reversed = selection.isReversed()

    # Pre mutate
    translation = switch @direction
      when 'up' then [[-1, 0], [0, 0]]
      when 'down' then [[0, 0], [1, 0]]

    swrap(selection).translate(translation...)
    range = selection.insertText(@getNewText(selection))

    # Post mutate
    range = range.translate(translation.reverse()...)
    selection.setBufferRange(range, {reversed})
    @editor.scrollToCursorPosition({center: true})

  getNewText: (selection) ->
    # Rotate row
    lineTexts = swrap(selection).lineTextForBufferRows()
    switch @direction
      when 'up'
        replacedText = lineTexts.shift()
        replacedText = @getOverwrittenForSelection(selection, replacedText) if @isOverwrite()
        lineTexts.push(replacedText)
      when 'down'
        replacedText = lineTexts.pop()
        replacedText = @getOverwrittenForSelection(selection, replacedText) if @isOverwrite()
        lineTexts.unshift(replacedText)
    lineTexts.join("\n") + "\n"

class MoveSelectedTextDown extends MoveSelectedTextUp
  @extend()
  direction: 'down'

        @countTimes =>
          return if (not @isLinewise()) and (not @isMovable(topSelection))
          for selection in selections
            @mutate(selection) if @isMovable(selection)

  getOverwrittenBySelection: ->
