anchor.diff:      (setf (find-buzzword name) buzzword)
       buzzword))
   
  +;; This takes care of removing a buzzword entirely, including all roles associated with it.
  +;; It also makes the function unbound (so the dispatcher is no longer called)
   (defun undefine-buzzword (name &optional (errorp nil))
     (let ((buzzword (find-buzzword name errorp)))
       (when buzzword
  
positive.code: 
  (defun arg-info-nkeys (arg-info)
    (count-if (lambda (x) (not (eq x t))) (arg-info-metatypes arg-info)))
  
  (defun create-bw-lambda-list (lambda-list)
    ;;; Create a buzzword lambda list from a message lambda list
    (loop for x in lambda-list
       collect (if (consp x) (list (car x)) x)
       if (eq x '&key) do (loop-finish)))
  
  (defun set-arg-info (bw &key new-message (lambda-list nil lambda-list-p))
    (let* ((arg-info (buzzword-arg-info bw))
  
negative.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (in-package :sheeple)
  
  ;; We currently use structs for storage, since they're more convenient atm.
  (defstruct (buzzword (:constructor %make-buzzword))
    (name nil)
    (lambda-list nil)
    (messages nil)
    ;; This contains an arg-info object that is used to maintain
    ;; lambda-list congruence.
    (arg-info (make-arg-info))
    (documentation ""))
  
  