anchor.diff:                                      ((eq mark citedmark) (funcall cont))))
                        (:indirect (cond ((eq mark lostmark)
                                          (funcall booking :cancel
  -                                                (funcall (alambda (subnode subrroute)
  -                                                           (case (route-relation (route-normalize cited) (route-normalize subrroute))
  -                                                             (:direct (car (push (route-booking citedmark cur subnode nil subrroute) basebook)))
  -                                                             (:indirect (loop :for cnode :in subnode
  -                                                                              :for idx = 0 :then (1+ idx)
  -                                                                              :collect (self cnode (cons idx subrroute))))
  -                                                             (t (car (push (route-booking lostmark subrroute subnode) basebook)))))
  -                                                         (funcall booking :subtree)
  -                                                         (funcall booking :rroute)))
  +                                                (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))))
  
positive.code: (defun proper-list-p (obj)
    (and (listp obj) (null (cdr (last obj)))))
  
  (defmacro with-route ((subtree-var route-var) 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)
  
negative.code:                                      ,subtree-var)))
         (labels ((,rec (,subtree-var ,route-var)
                    ,@body))
           (,rec ,tree ,initial-route)))))
  
  (defmacro traverse/route (var-tree-pairs (route-var invalid-p-name &optional (style :union)) &body body)
    (with-gensyms (rec order maxorder invalid-node)
  