anchor.diff:  (declaim (ftype (function (keymap
                              (types:proper-list keys)
                              (types:proper-list keymap))
  -                          symbol)
  +                          (or symbol keymap))
                   lookup-keys-in-keymap))
   (defun lookup-keys-in-keymap (keymap keys visited)
  -  "Return bound symbol or nil if there is none."
  +  "Return bound symbol or keymap, or nil if there is none."
     (when keys
       (let ((hit (fset:@ (entries keymap) (first keys))))
         (when hit
  
positive.code: (declaim (ftype (function (keymap
                             (types:proper-list keys)
                             (types:proper-list keymap))
                            symbol)
                  lookup-key*))
  (defun lookup-key* (keymap keys visited)
    "Internal function, see `lookup-key' for the user-facing function.
  VISITED is used to detect cycles."
    (if (find keymap visited)
        (warn "Cycle detected in keymap ~a" keymap)
        (progn
          (let ((sym nil))
            (find-if (lambda (keys)
                       (setf sym (lookup-translated-keys keymap keys (cons keymap visited))))
                     (progn
                       (format t "TRANSLATIONS (fun ~a): ~a~%" (translator keymap) (funcall (or (translator keymap) (constantly nil)) keys))
                       (cons keys (funcall (or (translator keymap) (constantly nil)) keys))))
            sym))))
  
  (declaim (ftype (function (keymap (types:proper-list keys)) symbol) lookup-key))
  (defun lookup-key (keymap keys)   ; TODO: Rename to lookup-keys? lookup-binding?
    "Return the symbol associated to keymap.
  Return nil if there is none.
  
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
  