anchor.diff:              (:predicate uconsp))
     (cdr   nil :type (or ucons null) :read-only t)
     (car   nil :type ucons-car       :read-only t)
  -  ;; TABLE contains all uconses whose cdr is this cons
  +  ;; TABLE tracks all uconses whose cdr is this cons
     (table nil :type (or list hash-table) :read-only nil))
   
  +(declaim (hash-table *ucons-root-table*))
   (defvar *ucons-root-table* (make-hash-table :test #'eql))
   
   (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."
     (declare (type (or null ucons) cdr)
  -           (type ucons-car car)
  -           (optimize speed))
  -  (if cdr
  -      (let ((table (ucons-table cdr)))
  -        (etypecase table
  -          (list
  -           (or (cdr (assoc car table))
  +           (type ucons-car car))
  +  (flet ((hash-table-lookup (hash-table)
  +           (declare (hash-table hash-table))
  +           (or (gethash car hash-table)
  +               (setf (gethash car hash-table)
  +                     (%ucons car cdr))))
  +         (alist-lookup (alist)
  +           (declare (list alist))
  +           (or (cdr (assoc car alist))
                  (let ((ucons (%ucons car cdr)))
                    (cond
  -                   ((> (length table) 5)
  +                   ((> (length alist) 5)
                       (setf (ucons-table cdr)
  -                          (alist-hash-table table :test #'eql :size 16))
  +                          (alist-hash-table alist :test #'eql :size 16))
                       (setf (gethash car (ucons-table cdr)) ucons))
                      (t
                       (push (cons car ucons)
                             (ucons-table cdr))))
  -                 ucons)))
  -          (hash-table
  -           (or (gethash car table)
  -               (setf (gethash car table)
  -                     (%ucons car cdr))))))
  -      (let ((table *ucons-root-table*))
  -        (or (gethash car table)
  -            (setf (gethash car table)
  -                  (%ucons car cdr))))))
  +                 ucons))))
  +    (if (null cdr)
  +        (hash-table-lookup *ucons-root-table*)
  +        (let ((table (ucons-table cdr)))
  +          (etypecase table
  +            (list (alist-lookup table))
  +            (hash-table (hash-table-lookup table)))))))
   
   (defun ulist (&rest args)
  +  "Return the ulist associated with the supplied arguments."
     (declare (dynamic-extent args))
     (labels ((%list (first rest)
                (if (null rest)
  
positive.code:               form)))))
  
  (defun ulist* (&rest args)
    (declare (dynamic-extent args))
    (labels ((%hlist* (first rest)
               (if (null rest)
  
negative.code:               form)))))
  
  (defun ulength (ulist)
    "Return the length of the given ulist."
    (declare (ulist ulist) (optimize speed))
    (loop while ulist count t
          do (setf ulist (ucons-cdr ulist))))
  