anchor.diff:    (declare (ignore documentation))
     `(progn
        (eval-when (:compile-toplevel)
  -       (setf (sicl-env:special-variable
  +       (setf (sicl-genv:special-variable
   	      ',name
  -	      sicl-env:*global-environment*
  +	      sicl-genv:*global-environment*
   	      nil)
   	     nil))
        (eval-when (:load-toplevel :execute)
  -       (setf (sicl-env:special-variable
  +       (setf (sicl-genv:special-variable
   	      ',name
  -	      sicl-env:*global-environment*
  +	      sicl-genv:*global-environment*
   	      t)
   	     ,initial-value)
          ',name)))
  
positive.code:   (if initial-value-p
        `(progn
  	 (eval-when (:compile-toplevel)
  	   (setf (sicl-env:special-variable
  		  ',name
  		  sicl-env:*global-environment*
  		  nil)
  		 nil)
  	   ',name)
  	 (eval-when (:load-toplevel :execute)
  	   (unless (sicl-env:boundp ',name
  				    sicl-env:*global-environment*)
  	     (setf (sicl-env:special-variable
  		    ',name
  		    sicl-env:*global-environment*
  		    t)
  		   ,initial-value))
  	   ',name))
        `(eval-when (:compile-toplevel :load-toplevel :execute)
  	 (setf (sicl-env:special-variable
  		',name
  		sicl-env:*global-environment*
  		nil)
  	       nil)
  	 ',name)))
  
negative.code: 
  (defmacro deftype (name lambda-list &body body)
    `(eval-when (:compile-toplevel :load-toplevel :execute)
       (setf (sicl-genv:type-expander
  	    ',name
  	    sicl-genv:*global-environment*)
  	   (function ,(cleavir-code-utilities:parse-deftype 
  		       name
  		       lambda-list
  