anchor.diff:  	     (mapc #'traverse (sicl-ast:children ast))))
       (traverse ast)))
   
  +(defun make-lexical-location-info (location)
  +  (make-instance 'sicl-env:lexical-location-info
  +    :dynamic-extent-p nil
  +    :ignore-info nil
  +    :inline-info nil
  +    :type t
  +    :location location))
  +
   (defun replace-setq (ast table)
     (let* ((lhs-ast (sicl-ast:lhs-ast ast))
   	 (location (cdr (assoc (sicl-env:location lhs-ast) table))))
  
positive.code: 	     (mapc #'traverse (sicl-ast:children ast))))
      (traverse ast)))
  
  (defun eliminate-externals (ast)
    (let* ((constants (build-constants ast))
  	 (constants-table
  	   (loop for constant in constants
  
negative.code: 		 collect (cons global
  			       (sicl-env:make-lexical-location (gensym))))))
      (replace-constants ast constants-table)
      (replace-globals ast globals-table)
      (let* ((externals-location (sicl-env:make-lexical-location (gensym)))
  	   (externals-in (make-lexical-location-info externals-location)))
        (push externals-in (sicl-ast:required (sicl-ast:lambda-list ast)))
        (setf (sicl-ast:body-ast ast)
  	    (sicl-ast:make-progn-ast
  	     (append (loop for entry in (append constants-table
  						globals-table)
  			   for loc = (cdr entry)
  			   for offset from 0 by 4
  			   collect (make-assignment
  				    externals-location offset loc))
  		     (list (sicl-ast:body-ast ast))))))))
  