anchor.diff:      | Delete
       | Change
       | SwitchMode of VimMode
  +    | Undo
       | DoNothing
   
   type TextObject =
  
positive.code:             | NormalMode, [ Movement m ] -> run Move m
              | NormalMode, [ FindChar m; c ] -> run Move (m c)
              | NormalMode, [ Action action; Movement m ] -> run action m
              | NormalMode, [ "d"; "d" ] -> run Delete WholeLine //TODO: this only applies for `dd`
              | NormalMode, [ Action action; FindChar m; c ] -> run action (m c)
              | NormalMode, [ Action action; "i"; BlockDelimiter c ] -> run action (InnerBlock c)
              | NormalMode, [ Action action; "a"; BlockDelimiter c ] -> run action (ABlock c)
              | NormalMode, [ Action action ]  -> wait
              | NormalMode, [ Action action; _ ] -> wait
              | NormalMode, [ FindChar m ] -> wait
              | NormalMode, [ ModeChange mode ] -> run (SwitchMode mode) Nothing
              | NormalMode, ["g"; "d"] -> wait
              | _ -> None
  
negative.code:             | Delete ->
                  textEditorData.SetSelection(start, finish)
                  ClipboardActions.Cut textEditorData
              | Visual -> textEditorData.SetSelection(start, finish)
              | Undo -> MiscActions.Undo textEditorData
              | _ -> ()
  
          match command.commandType with
  