anchor.diff:                form)))))
   
   (defun ulist* (&rest args)
  +  "Return the ulist associated with the supplied arguments, but using the
  +   last argument as the tail of the constructed ulist."
     (declare (dynamic-extent args))
     (labels ((%hlist* (first rest)
                (if (null rest)
  
positive.code:             (: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 nil :type (or list hash-table) :read-only nil))
  
  (defvar *ucons-root-table* (make-hash-table :test #'eql))
  
  (declaim (inline ucons))
  (defun ucons (car cdr)
    (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))
                 (let ((ucons (%ucons car cdr)))
                   (cond
                     ((> (length table) 5)
                      (setf (ucons-table cdr)
                            (alist-hash-table table :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))))))
  
  (defun ulist (&rest args)
    (declare (dynamic-extent args))
    (labels ((%list (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))))
  