anchor.diff:                       (t (traverse (car tree)))))
   	     (let ((entry (assoc-not-eq-identity (cdr tree) alist)))
                  (cond ((not (null entry)) (setf (cdr tree) (cdr entry)))
  -                     ((atom tree) nil)
  +                     ((atom (cdr tree)) nil)
                        (t (traverse (cdr tree)))))))
       (let ((entry (assoc-not-eq-identity tree alist)))
         (cond ((not (null entry)) (cdr entry))
  
positive.code: 
  (defun nsublis-test-identity (alist tree test)
    (labels ((traverse (tree)
               (let ((entry (assoc-test-identity (car tree) alist test)))
                 (cond ((not (null entry)) (setf (car tree) (cdr entry)))
                       ((atom (car tree)) nil)
                       (t (traverse (car tree)))))
  	     (let ((entry (assoc-test-identity (cdr tree) alist test)))
                 (cond ((not (null entry)) (setf (cdr tree) (cdr entry)))
                       ((atom tree) nil)
                       (t (traverse (cdr tree)))))))
      (let ((entry (assoc-test-identity tree alist test)))
        (cond ((not (null entry)) (cdr entry))
  	    ((atom tree) tree)
  	    (t (traverse tree) tree)))))
  
negative.code:     (labels ((traverse (tree)
  	       (let ((entry (assoc-test-not-identity (funcall key tree)
  						     alist
  						     (lambda (x y) (funcall test y x)))))
  		 (cond ((not (null entry))
  			(setf substitution-p t)
  			(cdr entry))
  