anchor.diff:  	      ;; macro replaced the original form with a new form.
   	      ;; This new form must then be converted.
   	      (convert expanded-form env))))))
  +
  +(defgeneric convert-special (head form environment))
  +
  
positive.code: (cl:in-package #:cleavir-generate-ast)
  
  (defmethod convert-form (form (info cleavir-env:symbol-macro-info) env)
    (let ((expansion (funcall (coerce *macroexpand-hook* 'function)
  
negative.code: 	      ;; taking into account the real macro expander.
  	      (convert expanded-form env))))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Converting a compound form that calls a local function.
  ;;; A local function can not have a compiler macro associated with it.
  
  (defmethod convert-form (form (info cleavir-env:local-function-info) env)
    (let ((function-ast (find-or-create-ast (cleavir-env:name info)))
  	(argument-asts (convert-sequence (cdr form) env)))
      (cleavir-ast:make-call-ast function-ast argument-asts)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Converting a compound form that calls a global function.
  ;;; A global function can have  compiler macro associated with it.
  
  (defmethod convert-form (form (info cleavir-env:global-function-info) env)
    (let ((compiler-macro (cleavir-env:compiler-macro info)))
      (if (null compiler-macro)
  