     @countTimes @getCount(), =>
       for selection in @getSelections()
         fn(selection)
+        swrap(selection).saveProperties()
+        swrap(selection).fixPropertyRowToRowRange()
+      if @submode is 'blockwise'
+        for blockwiseSelection in @vimState.getBlockwiseSelections()
+          blockwiseSelection.saveProperties()
 
   execute: ->
     @withGroupChanges =>

    linewiseDisposable = switchToLinewise(@editor) unless @vimState.isMode('visual', 'linewise')
    for selection in @getSelections()
      @duplicateLinewise(selection)
    linewiseDisposable?.dispose()

class DuplicateSelectedTextUp extends DuplicateSelectedText

  setBufferRangesForBlockwiseSelection
  rowCountForSelection
} = require './utils'
swrap = {switchToLinewise} = requireFrom('vim-mode-plus', 'selection-wrapper')

Base = requireFrom('vim-mode-plus', 'base')
Operator = Base.getClass('Operator')
