anchor.diff:    ((%situations :initarg :situations :reader situations)
      (%forms :initarg :forms :reader forms)))
   
  -(define-condition eval-when-special-form-must-be-proper-list 
  -    (compilation-program-error)
  -  ())
  -
   (define-condition eval-when-must-have-at-least-one-argument
       (compilation-program-error)
     ())
  
positive.code:   ((%protected-form :initarg :protected-form :reader protected-form)
     (%cleanup-forms :initarg :cleanup-forms :reader cleanup-forms)))
  
  (define-condition unwind-protect-special-form-must-be-proper-list 
      (compilation-program-error)
    ())
  
  (define-condition unwind-protect-must-have-at-least-one-argument
      (compilation-program-error)
    ())
  
  (defmethod convert-compound
      ((symbol (eql 'unwind-protect)) form environment)
    (unless (sicl-code-utilities:proper-list-p form)
      (error 'unwind-protect-special-form-must-be-proper-list
  	   :expr form))
    (unless (>= (length form) 2)
      (error 'unwind-protect-must-have-at-least-one-argument
  	   :expr form))
  
negative.code:   ((%tag :initarg :tag :reader tag)
     (%forms :initarg :forms :reader forms)))
  
  (define-condition catch-must-have-at-least-one-argument
      (compilation-program-error)
    ())
  
  (defmethod convert-compound
      ((symbol (eql 'catch)) form environment)
    (check-special-form-proper-list form)
    (unless (>= (length form) 2)
      (error 'catch-must-have-at-least-one-argument
  	   :expr form))
  