anchor.diff:      (list (null collection))
       (hash-table (zerop (hash-table-count collection)))))
   
  -(defun empty-lr1-collection (collection)
  +(defun clear-lr1-collection (collection)
     (declare (type lr1-collection collection))
     (typecase collection
       (list '())
  
positive.code:            (eq (item-lookahead i1) (item-lookahead i2)))))
  
  (defun item-equal-p (i1 i2)
    "Compares items treating them as LR(0) items."
    (declare (type item i1 i2))
    (or (eq i1 i2)
        (and (eq (item-production i1) (item-production i2))
             (= (item-position i1) (item-position i2)))))
  
  (defun item-lr1-hash-value (item)
    (declare (type lr1-item item))
    (cons (production-id (item-production item))
          (cons (item-position item)
                (item-lookahead item))))
  
  (defun item< (i1 i2)
    (declare (type item i1 i2))
    (cond
      ((eq i1 i2) nil)
  
negative.code: ;;; Lookaheads
  
  (defun compute-lookaheads (kernel grammar)
    "Compute the LR(1) lookaheads for all items in KERNEL."
    (declare (type kernel kernel) (type grammar grammar))
    (let ((res '()))
      (declare (optimize speed))
  