anchor.diff:              | NormalMode, [ "g"; "g" ] -> [ run Move StartOfDocument ]
               | NormalMode, [ "." ] -> [ run RepeatLastAction Nothing ]
               | NormalMode, [ "g" ] -> wait
  -            | VisualModes _, [ Movement m ] -> [ run Move m ]
  -            | VisualModes _, [ ModeChange mode ] -> [ run (SwitchMode mode) Nothing ]
  -            | VisualModes _, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
  -            | VisualModes _, [ "x" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  -            | VisualModes _, [ "d" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  -            | VisualModes _, [ "c" ] -> [ run Delete Selection; run (SwitchMode InsertMode) Nothing ]
  +            | VisualModes, [ Movement m ] -> [ run Move m ]
  +            | VisualModes, [ ModeChange mode ] -> [ run (SwitchMode mode) Nothing ]
  +            | VisualModes, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
  +            | VisualModes, [ "x" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  +            | VisualModes, [ "d" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  +            | VisualModes, [ "c" ] -> [ run Delete Selection; run (SwitchMode InsertMode) Nothing ]
               | _         , _ :: _ :: _ :: _ :: t -> [ run ResetKeys Nothing ]
               | _ -> []
           multiplier, action, newState
  
positive.code:     keys: string list
      mode: VimMode
      visualStartOffset: int
      findCharCommand: VimAction option
      lastAction: VimAction list // used by . command to repeat the last action
  }
  
  
negative.code:     let (|Keys|_|) (keys:string) =
          keys |> Seq.map(fun c -> c |> string) |> List.ofSeq |> Some
  
      let (|VisualModes|NonVisualMode|) mode =
          match mode with
          | VisualMode | VisualLineMode -> VisualModes
          | _ -> NonVisualMode
  
      let (|NotInsertMode|InsertModeOn|) mode =
          if mode = InsertMode then InsertModeOn else NotInsertMode
  