anchor.diff:                 :expected (list :start-element element-name)
                  :actual (list type lname)))
         (klacks:consume source)
  -      (funcall kk source bindings k))))
  -
  -(defun create-element-end-matcher (element-name kk)
  +      (funcall next-fun source bindings))))
  +
  +(defun create-element-end-matcher (element-name next-fun)
     "Return a function that expects to see the end of ELEMENT-NAME next in
   SOURCE."
  -  (lambda (source bindings k)
  +  (lambda (source bindings)
       (skip-characters source)
       (multiple-value-bind (type uri lname qname)
           (klacks:peek source)
  
positive.code: (defun create-bindings-returner ()
    "Return a function that does nothing but return its BINDINGS,
  effectively ending matching."
    (lambda (source bindings k)
      (declare (ignore source k))
      (nreverse bindings)))
  
  (defmacro catching-xml-errors (&body body)
  
negative.code: 
  (defvar *current-element-name*)
  
  (defun create-element-start-matcher (element-name next-fun)
    "Return a function that expects to see the start of ELEMENT-NAME
  next in SOURCE."
    (lambda (source bindings)
      (skip-characters source)
      (multiple-value-bind (type uri lname qname)
          (klacks:peek source)
  