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