anchor.diff:    (define-ucxr-accessors))
   
   (declaim (hash-table *ucons-root-table*))
  -(defvar *ucons-root-table* (make-hash-table :test #'eql))
  +(defvar *ucons-root-table* (make-hash-table :test #'eql)
  +  "The table of all uconses whose cdr is NIL.")
   
   (declaim (inline ucons))
   (defun ucons (car cdr)
  -  "Given a CAR that is either a number, a symbol, a character or a ucons
  -   and a CDR that is either NIL, or a ucons, return a UCONS that is EQ to
  -   all future and past invocation of this function with the same
  -   arguments."
  +  "Given a suitable CAR and CDR, return a UCONS that is EQ to all future
  +   and past invocation of this function with the same arguments."
     (declare (type (or null ucons) cdr)
  -           (type ucons-car car)
  +           (type ucar car)
              (values ucons))
     (flet ((hash-table-lookup (hash-table)
              (declare (hash-table hash-table))
              (or (gethash car hash-table)
                  (setf (gethash car hash-table)
  -                     (%ucons car cdr))))
  +                     (make-fresh-ucons car cdr))))
            (alist-lookup (alist)
              (declare (list alist))
              (or (cdr (assoc car alist))
  -               (let ((ucons (%ucons car cdr)))
  +               (let ((ucons (make-fresh-ucons car cdr)))
                    (prog1 ucons
                      (cond
                        ((> (length alist) 5)
  
positive.code: (in-package :petalisp)
  
  ;;; ucons - unique conses
  
  (deftype ucons-car () '(or fixnum symbol function character ucons))
  
  (deftype ulist () '(or ucons null))
  
  (defstruct (ucons
              (:constructor %ucons (car cdr))
              (:copier nil) ; this is the whole point, isn't it?
              (:predicate uconsp))
    (cdr   nil :type (or ucons null) :read-only t)
    (car   nil :type ucons-car       :read-only t)
    ;; TABLE tracks all uconses whose cdr is this cons
    (table nil :type (or list hash-table) :read-only nil))
  
  (macrolet
      ((define-ucxr-accessors ()
         (let (ucxr-forms)
  
negative.code:         do (setf ulist (ucons-cdr ulist))))
  
  (defun ulist-shallow-copy (ulist)
    "Return a list of the elements of ULIST."
    (declare (ulist ulist))
    (loop while ulist
          collect (ucons-car ulist)
          do (setf ulist (ucons-cdr ulist))))
  
  (defun ulist-deep-copy (ulist)
    "Return a tree of the same shape as ULIST, but where all occuring ulists
     have been converted to lists."
    (declare (ulist ulist))
    (loop while ulist
          collect (let ((car (ucons-car ulist)))
  