anchor.diff:                                                            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)))
  +    (the (values fset:map &optional)
  +         (fset:reduce #'fold-keymap (entries keymap)
  +                      :initial-value (fset:empty-map)))))
   
   (declaim (ftype (function (keymap &rest keymap) hash-table) keymap->map))
   (defun keymap->map (keymap &rest more-keymaps)
  
positive.code:                           (values keymap &optional))
                  make-keymap))
  (defun make-keymap (name &rest parents)
    ;; We coerce to 'keymap because otherwise SBCL complains "type assertion too
    ;; complex to check: (VALUES KEYMAP::KEYMAP &REST T)."
    (the (values keymap &optional)
         (make-instance 'keymap
                        :name name
  
negative.code: When multiple keymaps are provided, return the union of the `fset:map' of each arguments.
  Keymaps are ordered by precedence, highest precedence comes first."
    (let ((keymaps (reverse (cons keymap more-keymaps))))
      (the (values hash-table &optional)
           (fset:convert 'hash-table
                         (reduce #'fset:map-union
                                 (mapcar #'keymap->map* keymaps))))))
  
  (declaim (ftype (function (keymap) hash-table) keymap-with-parents->map))
  (defun keymap-with-parents->map (keymap)
  