anchor.diff:               (not (localp variable)))
       (push variable (gethash *active-environment-vector* *environment-layout*))))
   
  +(defun lambda-is-dynamic-extent-p (lambda)
  +  (or (eql (getf (lambda-information-plist lambda) 'extent) :dynamic)
  +      (getf (lambda-information-plist lambda) 'declared-dynamic-extent)))
  +
   (defun lambda-tree-is-dynamic-extent-p (lambda end)
     (cond ((eql lambda end)
            t)
           (t
  -         (and (or (eql (getf (lambda-information-plist lambda) 'extent) :dynamic)
  -                  (getf (lambda-information-plist lambda) 'declared-dynamic-extent))
  +         (and (lambda-is-dynamic-extent-p lambda)
                 (lambda-tree-is-dynamic-extent-p (gethash lambda *lambda-parents*) end)))))
   
   (defun finalize-environment-layout (env)
  -  ;; Inner environments must be DX, and every variable in this environment
  -  ;; must only be accessed by DX lambdas.
  +  ;; Inner environments must be DX, and every variable (including the parent
  +  ;; backlink) in this environment must only be accessed by DX lambdas.
     (when (and *allow-dx-environment*
                (not *perform-tce*)
                (every (lambda (var)
  
positive.code:         (maybe-add-environment-variable (lambda-information-count-arg lambda)))
        (compute-environment-layout (lambda-information-body lambda))
        (setf env-is-dx (finalize-environment-layout lambda)))
      (unless env-is-dx
        (setf *allow-dx-environment* nil))))
  
  
negative.code:                                (or (eql (lexical-variable-definition-point var) l)
                                     (lambda-tree-is-dynamic-extent-p l *current-lambda*)))
                               (lexical-variable-used-in var)))
                      (gethash env *environment-layout*))
               (every #'lambda-is-dynamic-extent-p *current-closure-set*))
      (setf (gethash env *environment-layout-dx*) t)
      t))
  
  