anchor.diff:  
   (defun start-state (syntax-graph)
     "Return the starting state of a given syntax diagram, if any."
  -  (let ((start-list (remove 0
  -                      (remove 1 (graph-nodes syntax-graph) :test-not #'= :key #'out-degree)
  -                      :test-not #'= :key #'in-degree)))
  -    (when (= (length start-list) 1)
  -      (car start-list))))
  +  (let ((start (remove 'start (graph-nodes syntax-graph) :test-not #'eq)))
  +    (if start
  +        (car start))))
   
   (defun end-state (syntax-graph)
     "Return the ending state of a given syntax diagram, if any."
  -  (let ((end-list (remove 0 (graph-nodes syntax-graph) :test-not #'= :key #'out-degree)))
  -    (when (= (length end-list) 1)
  -      (car end-list))))
  +  (let ((end (remove 'end (graph-nodes syntax-graph) :test-not #'eq)))
  +    (if end
  +        (car end))))
   
   (defun predicate-recognizer (pred)
     "Generate a recognizer predicate for strings from a predicate for characters."
  
positive.code:   (lambda (string &aux (res (funcall arg1 string)))
      (when res
        (funcall arg2 res))))
  
negative.code:            queue
             visited)
            ((null queue)
             (if (eq node end)
                 string))
            (let ((added (loop for e in (edges node graph)
                               for res = (funcall (edge-weight e) string)
                           if (not (member (end-node e) visited))
  