anchor.diff:                               (rest keys))))
                (when (and control? shift?)
                  (cons (let ((new-key (copy-key (first keys))))
  -                       (setf (key-modifiers new-key) (fset:less (key-modifiers new-key) +shift+)))
  +                       (setf (key-modifiers new-key) (fset:less (key-modifiers new-key) +shift+))
  +                       new-key)
                        (mapcar (lambda (key)
                                  (let ((new-key (copy-key key)))
                                    (setf (key-modifiers new-key) (fset:less (key-modifiers new-key) +control+))
  
positive.code: (declaim (ftype (function (keymap
                             (types:proper-list keys)
                             (types:proper-list keymap))
                            symbol)
                  lookup-keys-in-keymap))
  (defun lookup-keys-in-keymap (keymap keys visited)
    "Return bound symbol or nil if there is none."
    (when keys
      (let ((hit (fset:@ (entries keymap) (first keys))))
        (when hit
  
negative.code: (declaim (ftype (function (keymap
                             (types:proper-list keys)
                             (types:proper-list keymap))
                            (or symbol keymap))
                  lookup-translated-keys))
  (defun lookup-translated-keys (keymap keys visited)
    "Return the symbol or keymap associated to KEYS in KEYMAP.
  Return nil if there is none.
  Keymap parents are looked up one after the other."
    (let ((sym (lookup-keys-in-keymap keymap keys visited)))
      (unless sym
  