anchor.diff:              | 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, [ "u" ] -> run Undo Nothing
  +            | NormalMode, [ "d"; "d" ] -> run Delete WholeLine
               | 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
  
positive.code:     | Delete
      | Change
      | SwitchMode of VimMode
      | DoNothing
  
  type TextObject =
  
negative.code:         | _, Some action' ->
              newState, true
          | None, None ->
              state, false
          | _, _ -> 
              state, false
  
  