anchor.diff:      (nconc! (funinfo-free-vars fi) (list var)))
     var)
   
  -;;;; ENVIRONMENT
  -
  -(defun funinfo-env-parent (fi)
  -  (funinfo-env (funinfo-parent fi)))
  -
  -(defun funinfo-env-add-args (fi args)
  -  (setf (funinfo-env fi) (append (funinfo-env fi) args))
  -  args)
  -
  -(defun funinfo-env-all (fi)
  -  (cons (funinfo-env fi)
  -		(awhen (funinfo-parent fi)
  -		  (funinfo-env-all !))))
  -
  -(defun funinfo-env-add (fi arg)
  -  (unless (funinfo-env-pos fi arg)
  -    (funinfo-env-add-args fi (list arg))))
  -
  -(defun funinfo-make-stackplace (fi x)
  -  (funinfo-env-add fi x)
  -  `(%stack ,(funinfo-env-pos fi x)))
  +;;;; ARGUMENTS & ENVIRONMENT
  +
  +(defun funinfo-in-args-or-env? (fi x)
  +  (or (funinfo-arg? fi x)
  +	  (funinfo-env-pos fi x)))
   
   (defun funinfo-in-this-or-parent-env? (fi var)
     (when fi
  -    (or (funinfo-env-pos fi var)
  +    (or (funinfo-in-args-or-env? fi var)
   	    (awhen (funinfo-parent fi)
   		  (funinfo-in-this-or-parent-env? ! var)))))
  +
  +;;;; ENVIRONMENT
   
   (defmacro with-funinfo-env-temporary (fi args &rest body)
     (with-gensym old-env
  
positive.code: 					 env-pos env
  					 lexical-pos lexicals)
  				   2))))
  
  ;;;; CLOSURES
  
  
negative.code: 
  (defstruct funinfo
    ; Lists of stack variables. The rest contains the parent environments.
    (env nil)
  
    ; List of arguments.
    (args nil)
  
    (renamed-vars nil)
  
    ; List of variables defined outside the function.
    (free-vars nil)
  