anchor.diff:              this.CommandInputModeChanged mode
               if mode.IsNone then model.CommandTextSelection <- (999, 0))
   
  -        // make sure selected item gets set to the cursor
  -        let desiredCursor = model.Cursor
  -        model.Cursor <- -1
  -        window.Loaded.Add (fun _ -> model.Cursor <- desiredCursor)
  -
  +        // bind tab to switching focus
           window.PathBox.PreviewKeyDown.Add (onKey Key.Tab window.NodeGrid.Focus)
           window.NodeGrid.PreviewKeyDown.Add (onKey Key.Tab (fun () ->
               window.PathBox.CaretIndex <- window.PathBox.Text.Length
  
positive.code:             if not window.NodeGrid.IsFocused then
                  window.NodeGrid.Focus() |> ignore)
  
          // on resize, keep selected node in view, update the page size when form is resized
          window.NodeGrid.SizeChanged.Add (fun _ ->
              this.KeepSelectedInView()
              match this.ItemsPerPage with
              | Some i -> model.PageSize <- i
              | None -> ())
  
          // escape always resets the input mode
          window.PreviewKeyDown.Add (onKey Key.Escape (fun () ->
              model.Status <- ""
              model.CommandInputMode <- None))
  
          window.CommandBox.LostFocus.Add (fun _ -> model.CommandInputMode <- None)
  
      override this.EventStreams = [
          window.PathBox.PreviewKeyDown |> onKeyFunc Key.Enter (fun () -> OpenPath window.PathBox.Text)
  
negative.code:                 window.CommandBox.Text <- model.CommandText |> BindingOptions.UpdateSourceOnChange
              @>
  
          model.OnPropertyChanged <@ model.Path @> (fun path -> window.PathBox.Text <- path.Value)
  
          model.OnPropertyChanged <@ model.CommandTextSelection @> (fun (start, len) ->
              window.CommandBox.Select(start, len))
  
  