anchor.diff:  (defun proper-list-p (obj)
     (and (listp obj) (null (cdr (last obj)))))
   
  -(defmacro with-route ((subtree-var route-var) tree &body body)
  +(defmacro with-route ((subtree-var route-var &optional (initial-route '(list 0))) tree &body body)
     (with-gensyms (rec idx subtree)
       `(symbol-macrolet ((next-level (if (proper-list-p ,subtree-var)
                                        (loop :for ,idx = 0 :then (1+ ,idx)
  
positive.code:                                      ,subtree-var)))
         (labels ((,rec (,subtree-var ,route-var)
                    ,@body))
           (,rec ,tree (list 0))))))
  
  (defmacro traverse/route (var-tree-pairs (route-var invalid-p-name &optional (style :union)) &body body)
    (with-gensyms (rec order maxorder invalid-node)
  
negative.code:                                     ((eq mark citedmark) (funcall cont))))
                       (:indirect (cond ((eq mark lostmark)
                                         (funcall booking :cancel
                                                  (let ((croute (route-normalize cited)))
                                                    (with-route (subnode subrroute (funcall booking :rroute)) (funcall booking :subtree)
                                                      (case (route-relation croute (route-normalize subrroute))
                                                        (:direct (car (push (route-booking citedmark cur subnode nil subrroute) basebook)))
                                                        (:indirect next-level)
                                                        (t (car (push (route-booking lostmark subrroute subnode) basebook)))))))
                                         (car (push (route-booking refmark cited node cont) modbook)))
                                        ((eq mark citedmark) (funcall cont)))))
                     (stack-ref-booking cited node cont cur))))
  