anchor.diff:  			      (cleavir-env:expansion info))
   			    form
   			    env)))
  -    (convert expansion env)))
  +    (with-preserved-toplevel-ness
  +      (convert expansion env))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;
  
positive.code: 			    (cleavir-env:expander info)
  			    form
  			    env)))
      (convert expansion env)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code: 
  (defmethod convert-form (form (info cleavir-env:global-macro-info) env)
    (let ((compiler-macro (cleavir-env:compiler-macro info)))
      (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)))))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  