anchor.diff:  
   (defmethod convert-form (form (info cleavir-env:global-macro-info) env)
     (let ((compiler-macro (cleavir-env:compiler-macro info)))
  -    (if (null compiler-macro)
  -	;; There is no compiler macro, so we just apply the macro
  -	;; expander, and then convert the resulting form.
  -	(convert (funcall (coerce *macroexpand-hook* 'function)
  -			  (cleavir-env:expander info)
  -			  form
  -			  env)
  -		 env)
  -	;; There is a compiler macro, so we must see whether it will
  -	;; accept or decline.
  -	(let ((expanded-form (funcall (coerce *macroexpand-hook* 'function)
  -				      compiler-macro
  -				      form
  -				      env)))
  -	  (if (eq form expanded-form)
  -	      ;; If the two are EQ, this means that the compiler macro
  -	      ;; declined.  Then we appply the macro function, and
  -	      ;; then convert the resulting form, just like we did
  -	      ;; when there was no compiler macro present.
  -	      (convert (funcall (coerce *macroexpand-hook* 'function)
  -				(cleavir-env:expander info)
  -				expanded-form
  -				env)
  -		       env)
  -	      ;; If the two are not EQ, this means that the compiler
  -	      ;; macro replaced the original form with a new form.
  -	      ;; This new form must then again be converted without
  -	      ;; taking into account the real macro expander.
  -	      (convert expanded-form env))))))
  +    (with-preserved-toplevel-ness
  +      (if (null compiler-macro)
  +	  ;; There is no compiler macro, so we just apply the macro
  +	  ;; expander, and then convert the resulting form.
  +	  (convert (funcall (coerce *macroexpand-hook* 'function)
  +			    (cleavir-env:expander info)
  +			    form
  +			    env)
  +		   env)
  +	  ;; There is a compiler macro, so we must see whether it will
  +	  ;; accept or decline.
  +	  (let ((expanded-form (funcall (coerce *macroexpand-hook* 'function)
  +					compiler-macro
  +					form
  +					env)))
  +	    (if (eq form expanded-form)
  +		;; If the two are EQ, this means that the compiler macro
  +		;; declined.  Then we appply the macro function, and
  +		;; then convert the resulting form, just like we did
  +		;; when there was no compiler macro present.
  +		(convert (funcall (coerce *macroexpand-hook* 'function)
  +				  (cleavir-env:expander info)
  +				  expanded-form
  +				  env)
  +			 env)
  +		;; If the two are not EQ, this means that the compiler
  +		;; macro replaced the original form with a new form.
  +		;; This new form must then again be converted without
  +		;; taking into account the real macro expander.
  +		(convert expanded-form env)))))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;
  
positive.code: 			      (cleavir-env:expansion info))
  			    form
  			    env)))
      (convert expansion env)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code: 			    (cleavir-env:expander info)
  			    form
  			    env)))
      (with-preserved-toplevel-ness
        (convert expansion env))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  