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