anchor.diff:  ;;; Generic
   
   (eval-when (:compile-toplevel :execute)
  -  (defmacro def-state-generic (fun-name lambda-list &body options)
  -    "Defines generic where first parameter must be state.
  -These generic functions must be called only within with-atn"
  +  (defun %def-%-generic (fun-name lambda-list options getter)
       (multiple-value-bind (required optional rest keys)
           (parse-ordinary-lambda-list lambda-list) 
         (let ((generic-name (symbolicate "%%" fun-name))
  
positive.code: 
  (defstruct atn
    (table (make-hash-table))
    (rules (make-hash-table)))
  
  ;;; Rule
  
  (defstruct rule
    state
    options)
  
  ;;; Possible states
  
  (defclass state ()
    ((cond :accessor state-cond
           :initarg :cond
           :initform t)
  
negative.code: 
             #:def-state-generic
             #:def-state-method
             #:def-rule-generic
             #:def-rule-method
  
             #:atn->dot
             #:@atn->dot))
  