anchor.diff:                                           clauses-acc))))))))
       (rec clauses nil nil)))
   
  -(defun expand-case-macro/flet (cont expr-temp normal-clauses default)
  +(defun expand-case-macro/flet (cont expr-temp normal-clauses default &key macro-name)
     (multiple-value-bind (dests clauses)
         (expand-case-macro/common normal-clauses
                                   :jump (lambda (sym)
  -                                        `(,sym)))
  +                                        `(,sym))
  +                                :macro-name macro-name)
       (let ((fns (loop for (sym . body) in dests
                        collect `(,sym () ,@body))))
         `(flet ,fns
            ,(funcall cont expr-temp default clauses)))))
   
  -(defun expand-case-macro/tagbody (cont expr-temp normal-clauses default)
  -  (let ((case-block (gensym (string 'case-block))))
  +(defun expand-case-macro/tagbody (cont expr-temp normal-clauses default &key macro-name)
  +  (let ((case-block (gensym (format nil "~a-~a" macro-name 'block))))
       (multiple-value-bind (dests clauses)
           (expand-case-macro/common normal-clauses
                                     :jump (lambda (sym)
  
positive.code:                        (rec rest-clauses
                              dest-acc
                              (cons (first clauses) clauses-acc))
                         (let* ((sym (gensym (string 'case-fn)))
                                (dest (cons sym body))
                                (body (list (funcall jump sym))))
                           (rec rest-clauses
  
negative.code:             (assert (listp default))
              (assert (listp clauses))
              (funcall cont expr-temp default clauses)))
          (expr-temp (gensym (format nil "~a-~a"
                                     macro-name 'key))))
      ;; Rebind expr.
      `(let ((,expr-temp ,expr))
         ,(multiple-value-bind (clauses default)
  