anchor.diff:               (setf list1 (delete list2-elt list1 :count 1)))))
       (if (fset:set? strings-or-modifiers)
           strings-or-modifiers
  -        (coerce (fset:convert 'fset:set
  -                              (let* ((mods (mapcar #'modspec->modifier strings-or-modifiers))
  -                                     (no-dups-mods (delete-duplicates mods :test #'modifier=)))
  -                                (when (/= (length mods) (length no-dups-mods))
  -                                  (warn "Duplicate modifiers: ~a"
  -                                        (mapcar #'modifier-string
  -                                                (list-difference mods no-dups-mods))))
  -                                no-dups-mods))
  -                'fset:wb-set))))
  +        (the (values fset:wb-set &optional)
  +             (fset:convert 'fset:set
  +                           (let* ((mods (mapcar #'modspec->modifier strings-or-modifiers))
  +                                  (no-dups-mods (delete-duplicates mods :test #'modifier=)))
  +                             (when (/= (length mods) (length no-dups-mods))
  +                               (warn "Duplicate modifiers: ~a"
  +                                     (mapcar #'modifier-string
  +                                             (list-difference mods no-dups-mods))))
  +                             no-dups-mods))))))
   
   (declaim (ftype (function (&key (:code integer) (:value string)
                                   (:modifiers list) (:status keyword))
  
positive.code:                                                           subsym))
                                                  (keymap->map* sym (cons sym visited))))))
                   (fset:with result keyspec sym)))))
      (coerce
       (fset:reduce #'fold-keymap (entries keymap)
                    :initial-value (fset:empty-map))
       'fset:map)))
  
  (declaim (ftype (function (keymap &rest keymap) hash-table) keymap->map))
  (defun keymap->map (keymap &rest more-keymaps)
  
negative.code:                           (values keymap &optional))
                  make-keymap))
  (defun make-keymap (name &rest parents)
    ;; We use (values keymap &optional) type because of an SBCL limitation.
    ;; See http://www.sbcl.org/manual/#Implementation-Limitations.
    (the (values keymap &optional)
         (make-instance 'keymap
                        :name name
  