anchor.diff:              member private x.CmdTabOrComplete () =
                   let mutable complete = false;
   
  -                if x.AutoCompleteEvent <> null then
  +                if x.AutoCompleteEvent.IsSome then
                       if x.TabAtStartCompletes then
                           complete <- true
                       else 
  
positive.code:             | Forward = 1
              | Backward = 2
  
          type Handler(cmd : Command, keyInfo : ConsoleKeyInfo, h : unit -> unit) =
              member val HandledCommand = cmd
              member val KeyInfo = keyInfo
              member val KeyHandler = h
  
              new(cmd : Command, key, h : unit -> unit) = Handler(cmd, new ConsoleKeyInfo((char) 0, key, false, false, false), h)
              new(cmd : Command, c, h : unit -> unit) = 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:         open System.Reflection
  
          type Completion = { Result : string list; Prefix : string }
          type AutoCompleteHandler = string -> int -> Completion
          type KeyHandler = unit -> unit
  
          type Command =
              | Done = 1
  