anchor.diff:  
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;
  -;;; Macro CASE.
  +;;; Macros CASE, ECASE, CCASE.
  +;;;
  +;;; A normal CASE/ECASE/CCASE clause has the form (KEYS FORM*) where
  +;;; KEYS is a designator for a list of objects, except that for CASE,
  +;;; the symbols T and OTHERWISE may not be used as such.  Instead,
  +;;; when T or OTHERWISE are present in the CAR of a clause, then they
  +;;; do not designate a list of objects, and instead that clause is an
  +;;; otherwise-clause.  For ECASE and CCASE, T and OTHERWISE can be
  +;;; used as as designators for lists, and they then designate the
  +;;; singleton list containing itself. 
  +;;;
  +;;; In the glossary of the HyperSpec (under "list designator"), we
  +;;; learn that a list designator is ether a non-NIL atom, in which
  +;;; case the denoted list is the list containing that one atom, or
  +;;; else it is a proper list, and the denoted list is that list.  In
  +;;; particular, this means that if NIL (or equivalently `()') is used
  +;;; in the CAR of a CASE clause, then the denoted list is the empty
  +;;; list and NOT the list containing NIL.  Thus, to obtain the
  +;;; singleton list containing NIL, the user has to use `(NIL)'. 
   
   ;;; Take a list of keys (known to be a proper list), and the name of a
   ;;; variable, and produce a list of forms (eql <variable> key).
  
positive.code: 			:expected-type '(member ,@keys))))
      `(let ((,variable ,keyform))
         ,(expand-e/ctypecase-clauses clauses variable final 'etypecase))))
  
  ;;; As with CCASE, the default for CTYPECASE is is to signal a
  ;;; correctable error, and to allow the value to be altered by the
  
negative.code: 			:expected-type '(member ,@keys))))
      `(let ((,variable ,keyform))
         ,(expand-e/ccase-clauses clauses variable final 'ecase))))
  
  (define-compiler-macro ecase (&whole form &rest args)
    (declare (ignore args))
    (sicl-code-utilities:check-form-proper-list form)
    form)
  
  ;;; This function is does the same thing as
  ;;; (mapcar #'list vars vals), but since we are not
  