anchor.diff:  
                           if t.Key = cki.Key && t.Modifiers = modifier then
                               handled <- true
  -                            handler.KeyHandler.Invoke ()
  +                            handler.KeyHandler ()
                               last_command <- handler.HandledCommand
                           else if t.KeyChar = cki.KeyChar && t.Key = ConsoleKey.Zoom then
                               handled <- true
  -                            handler.KeyHandler.Invoke()
  +                            handler.KeyHandler ()
                               last_command <- handler.HandledCommand
   
                           handler_index <- handler_index + 1
  
positive.code:             | Forward = 1
              | Backward = 2
  
          type Handler(cmd : Command, cki : ConsoleKeyInfo, h : KeyHandler) =
              member val HandledCommand = cmd
              member val CKI = cki
              member val KeyHandler = h
  
              new(cmd : Command, key, h : KeyHandler) = Handler(cmd, new ConsoleKeyInfo((char) 0, key, false, false, false), h)
              new(cmd : Command, c, h : KeyHandler) = Handler(cmd, new ConsoleKeyInfo (c, ConsoleKey.Zoom, false, false, false), h)
              
              static member Alt cmd c k h = Handler (cmd, new ConsoleKeyInfo (c, k, false, true, false), h)
              static member Control cmd (c : char) h = Handler (cmd, (char) ((int)c - (int)'A' + 1), h)
  
negative.code:             do 
                  handlers <-
                      [|
                          new Handler (Command.Done, ConsoleKey.Enter,      x.CmdDone)
                          new Handler (Command.Home,ConsoleKey.Home,       x.CmdHome)
                          new Handler (Command.End,ConsoleKey.End,        x.CmdEnd)
                          new Handler (Command.Left,ConsoleKey.LeftArrow,  x.CmdLeft)
                          new Handler (Command.Right,ConsoleKey.RightArrow, x.CmdRight)
                          new Handler (Command.HistoryPrev,ConsoleKey.UpArrow,    x.CmdHistoryPrev)
                          new Handler (Command.HistoryNext,ConsoleKey.DownArrow,  x.CmdHistoryNext)
                          new Handler (Command.Backspace,ConsoleKey.Backspace,  x.CmdBackspace)
                          new Handler (Command.DeleteChar,ConsoleKey.Delete,     x.CmdDeleteChar)
                          new Handler (Command.TabOrComplete,ConsoleKey.Tab,        x.CmdTabOrComplete)
                  
                          // Emacs keys
                          Handler.Control Command.Home 'A' (x.CmdHome)
                          Handler.Control Command.End 'E' (x.CmdEnd)
                          Handler.Control Command.Left 'B' (x.CmdLeft)
                          Handler.Control Command.Right 'F' (x.CmdRight)
                          Handler.Control Command.HistoryPrev 'P' (x.CmdHistoryPrev)
                          Handler.Control Command.HistoryNext 'N' (x.CmdHistoryNext)
                          Handler.Control Command.CmdKillToEOF 'K' (x.CmdKillToEOF)
                          Handler.Control Command.Yank 'Y' (x.CmdYank)
                          Handler.Control Command.DeleteChar 'D' (x.CmdDeleteChar)
                          Handler.Control Command.Refresh 'L' (x.CmdRefresh)
                          Handler.Control Command.ReverseSearch 'R' (x.CmdReverseSearch)
                          
                          Handler.Alt Command.BackwardWord 'B' ConsoleKey.B (x.CmdBackwardWord)
                          Handler.Alt Command.ForwardWord 'F' ConsoleKey.F (x.CmdForwardWord)
                  
                          Handler.Alt Command.DeleteWord 'D' ConsoleKey.D (x.CmdDeleteWord)
                          Handler.Alt Command.DeleteBackword ((char)8) ConsoleKey.Backspace (x.CmdDeleteBackword)
                  
                          // DEBUG
                          //Handler.Control ('T', CmdDebug),
  
                          // quote
                          Handler.Control Command.Quote 'Q' (fun () -> x.HandleChar ((Console.ReadKey (true)).KeyChar))
                          
                      |]
  
  