anchor.diff:  
   (defclass parse-tree ()
     ((start-mark :initform nil :initarg :start-mark :reader start-mark)
  -   (size :initform nil :initarg :size)))
  -
  -(defgeneric start-offset (parse-tree))
  +   (size :initform nil :initarg :size))
  +  (:documentation "The base class for all parse trees."))
  +
  +(defgeneric start-offset (parse-tree)
  +  (:documentation "The offset in the buffer of the first
  +character of a parse tree."))
   
   (defmethod start-offset ((tree parse-tree))
     (let ((mark (start-mark tree)))
  
positive.code: ;;; lexer
  
  (defclass lexer ()
    ((buffer :initarg :buffer :reader buffer)))
  
  (defgeneric nb-lexemes (lexer))
  (defgeneric lexeme (lexer pos))
  (defgeneric insert-lexeme (lexer pos lexeme))
  (defgeneric delete-invalid-lexemes (lexer from to))
  (defgeneric inter-lexeme-object-p (lexer object))
  (defgeneric skip-inter-lexeme-objects (lexer scan))
  (defgeneric update-lex (lexer start-pos end))
  (defgeneric next-lexeme (lexer scan))
  
  (defclass incremental-lexer (lexer)
    ((lexemes :initform (make-instance 'standard-flexichain) :reader lexemes)))
  
  (defmethod nb-lexemes ((lexer incremental-lexer))
    (nb-elements (lexemes lexer)))
  
negative.code: 
  
  (defmacro grammar (&body body)
    "Create a grammar object from a set of rules."
    (let ((rule (gensym "RULE"))
  	(rules (gensym "RULES"))
  	(result (gensym "RESULT")))
  