anchor.diff:  (defclass variable-space () ())
   (defclass block-space () ())
   (defclass tag-space () ())
  +(defclass type-space () ())
   (defclass declaration-space () ())
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code: 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Querying the environment.
  
  (defun find-in-namespace (name environment namespace)
  
negative.code: ;;; If there is a compiler macro entry, it must refer to a base entry
  ;;; which is either a global macro entry or to a global function entry
  ;;; that is bound.  This function searches for such a base entry.
  ;;;
  ;;; FIXME: for now, don't require the function entry to be bound.
  (defun find-base-entry (name environment)
    (or (find-if (lambda (entry)
  		 (eq (name entry) name))
  	       (macros environment))
        (find-if (lambda (entry)
  		 (eq (name entry) name))
  ;;		 (and (eq (name entry) name)
  ;;		      (not (eq (car (storage (location entry))) +unbound+))))
  	       (functions environment))))
  
  (defun (setf compiler-macro-function) (new-function name &optional environment)
    (unless (null environment)
      (error "Environment object must be nil."))
    (let ((base-entry (find-base-entry name *global-environment*)))
      (when (null base-entry)
        (error "A global macro or a global function must already exist."))
      (let ((c-m-entry (find-if (lambda (entry)
  				(eq (base-entry entry) base-entry))
  			      (compiler-macros *global-environment*))))
        ;; Remove the old entry if there was one.
        (unless (null c-m-entry)
  