anchor.diff:                   ,(or continuation `(good ,result ,p))
                    (progn
                      ,@(restore-state state-bindings)
  -                   ,failure)))))))
  +                   nil)))))))
   
   (defun compile-or (body txt pos names result state)
     "Compile the forms in an OR so that the OR matches if any of the elements
  
positive.code:       (let ((new-body (mapcar #'rewrite and-body)))
          (if result `(,@new-body ,result) and-body)))))
  
  (defun and-wrapper (expr ok result p continuation failure state)
    "Wrap an expression to be part of a AND. Arranges to save the state, evaluate
  the expression. If it succeeds, invoke the continuation of the AND, if there is
  one, or succeed, returning the value and position returned by the expression.
  
negative.code:        txt pos p names result state
         (compile-or (rest body) txt pos names (gensym "R") state)))))
  
  (defun or-wrapper (expr ok result p continuation state)
    "Wrap an expression to be part of an OR. Arranges to save the state,
  evaluate the expression, and then either return success or invoke the
  continuation of the OR, if there is one, or fail and roll back the state."
  