anchor.diff:    ((%protected-form :initarg :protected-form :reader protected-form)
      (%cleanup-forms :initarg :cleanup-forms :reader cleanup-forms)))
   
  -(define-condition unwind-protect-must-have-at-least-one-argument
  -    (compilation-program-error)
  -  ())
  -
   (defmethod convert-compound
       ((symbol (eql 'unwind-protect)) form environment)
  -  (check-special-form-proper-list form)
  -  (unless (>= (length form) 2)
  -    (error 'unwind-protect-must-have-at-least-one-argument
  -	   :expr form))
  +  (sicl-code-utilities:check-form-proper-list form)
  +  (sicl-code-utilities:check-argcount form 1 nil)
     (make-instance 'unwind-protect-ast
   		 :protected-form (convert (cadr form) environment)
   		 :cleanup-forms (convert-sequence (cddr form) environment)))
  
positive.code:   
  (defmethod convert-compound
      ((symbol (eql 'setq)) form environment)
    (check-special-form-proper-list form)
    (unless (oddp (length form))
      (error 'setq-must-have-even-number-of-arguments
  	   :expr form))
  
negative.code: ;;;
  ;;; Converting SYMBOL-MACROLET.
  
  (defmethod convert-compound
      ((head (eql 'symbol-macrolet)) form environment)
    (sicl-code-utilities:check-form-proper-list form)
    (sicl-code-utilities:check-argcount form 1 nil)
    ;; FIXME: syntax check bindings
    (let ((new-environment environment))
      (loop for (name expansion) in (cadr form)
  