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:                          collection))))
  
  (declaim (inline lr1-add))
  (defun lr1-add (item collection)
    (declare (type lr1-item item) (type lr1-collection collection))
    (typecase collection
      (list (cons item collection))
  
negative.code:                      (yacc-parse-error-expected-terminals e)))))
  
  (defun parse-with-lexer (lexer parser)
  "Parse the stream of symbols provided by LEXER using PARSER.
  LEXER is a function of no arguments returning a symbol and a semantic value,
  and should return (VALUES NIL NIL) when the end of input is reached.
  Handle YACC-PARSE-ERROR to provide custom error reporting."
    (declare (type (function () (values symbol t)) lexer))
    (declare (type parser parser))
    (let ((action-array (parser-action parser))
  