anchor.diff:                                       "source" (enough-namestring (definition-file step)
                                                        *base-pathname*)))))
   
  -(defmacro with-error-handling (&body body)
  -  `(let ((*debugger-hook* (lambda (condition prev-hook)
  -                            (declare (ignore prev-hook))
  -                            (fail "Non-error condition invoked the debugger"
  -                                  :exception (prin1-to-string condition)
  -                                  :backtrace (trivial-backtrace:print-backtrace condition :output nil)))))
  -     (handler-case
  -               (progn ,@body)
  -             (error (condition)
  -               (fail "Caught an error"
  -                     :exception (prin1-to-string condition)
  -                     :backtrace (trivial-backtrace:print-backtrace condition :output nil))))))
  -
   (define-wire-protocol-method "invoke" (id args)
     (let ((step (elt *steps* id)))
       (if step
  
positive.code: 
  (defun reset-state ()
    (clrhash *variables*))
  
  (Before
   (reset-state))
  
negative.code: (define-wire-protocol-method "end_scenario" ()
    (with-error-handling
      (map nil 'funcall *after-hooks*)
      (reset-state)
      (list "success")))
  
  (define-wire-protocol-method "step_matches" ((name-to-match "name_to_match"))
  