anchor.diff:  			:expected-type '(member ,@keys))))
       `(let ((,variable ,keyform))
          ,(expand-e/ctypecase-clauses clauses variable final 'etypecase))))
  +
  +(define-compiler-macro etypecase (&whole form &rest args)
  +  (declare (ignore args))
  +  (sicl-code-utilities:check-form-proper-list form)
  +  form)
   
   ;;; As with CCASE, the default for CTYPECASE is is to signal a
   ;;; correctable error, and to allow the value to be altered by the
  
positive.code: 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Macro CASE.
  
  ;;; 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).
  
negative.code: 	      ,label
  	      ,(expand-e/ccase-clauses clauses (car store-vars) final 'ccase)))))))
  
  (define-compiler-macro ccase (&whole form &rest args)
    (declare (ignore args))
    (sicl-code-utilities:check-form-proper-list form)
    form)
  
  ;;; Turn a list of TYPECASE clauses into nested IFs.  We check that
  ;;; the list of clauses is a proper list, that each clause is a proper
  ;;; list as well, and that, if there is an otherwise clause, it is the
  