anchor.diff:                      (modifier-shortcut string-or-modifier2)))))))
   
   (defmethod fset:compare ((x modifier) (y modifier))
  -  "Needed to user the KEY structure as keys in Fset maps."
  +  "Modifier sets need this comparison function to be ordered, so that (\"C\"
  +\"M\") is the same as (\"M\" \"C\")."
     (fset:compare-lexicographically (modifier-string x) (modifier-string y)))
   
   (defvar +control+ (make-modifier :string "control" :shortcut "C"))
  
positive.code:     new-key))
  
  (defmethod fset:compare ((x key) (y key))
    "Needed to user the KEY structure as keys in Fset maps."
    (if (key= x y)
        :equal
        :unequal))
  
negative.code: (defun keymap-p (object)
    (typep object 'keymap))
  
  ;; "keyspec" is better then "keydesc" since the strings are well specified,
  ;; while a "description" could be anything.
  (deftype keyspecs-type ()
    `(satisfies keyspecs->keys))
  
  ;; We need a macro to check that bindings are valid at compile time.
  ;; This is because most Common Lisp implementations are not capable of checking
  ;; types that use `satisfies' for non-top-level symbols.
  ;; We can verify this with:
  ;;
  