anchor.diff:    "Compute the LR(1) lookaheads for all the collections in KERNELS."
     (declare (list kernels) (type grammar grammar))
     (setf (item-lookaheads (kernel-item (car kernels))) (list 'eof))
  -  (let ((previously-changed kernels)
  -        (changed '()))
  +  (let ((previously-changed kernels) (changed '())
  +        (propagate-only nil))
       (declare (optimize (speed 3) (space 0)))
       (loop
        (dolist (kernel kernels)
          (when (memq kernel previously-changed)
  -         (let ((lookaheads (compute-lookaheads kernel grammar)))
  +         (let ((lookaheads (compute-lookaheads kernel grammar propagate-only)))
              (declare (list lookaheads))
              (dolist (goto (kernel-gotos kernel))
                (declare (type goto goto))
  
positive.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 3) (space 0)))
  
negative.code:         (map-lr1-collection
           #'(lambda (item)
               (declare (type lr1-item item))
               (unless (or (and propagate-only
                                (not (eq 'propagate (item-lookahead item))))
                           (item-dot-right-p item))
                 (push (cons i (lr1-item-shift item)) res)))
           j)))
      res))
  