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