anchor.diff:  
   (prove:subtest "Traverse parents."
     (prove:is (htree:all-parents-data
  -             (htree:back (make-tree1)))
  +             (htree:back (make-history1)))
               '("http://example.root")))
   
   (prove:subtest "Traverse forward children."
     (prove:is (htree:all-forward-children-data
  -             (htree:back (make-tree1)))
  +             (htree:back (make-history1)))
               '("http://example.root/B2")))
   
   (prove:subtest "Traverse all children."
     (prove:is (htree:all-children-data
  -             (htree:back (make-tree1)))
  +             (htree:back (make-history1)))
               '("http://example.root/B2" "http://example.root/B1")))
   
   (prove:subtest "Move node to forward-child on add."
  -  (let ((tree (make-tree2)))
  -    (prove:is (htree:value (htree:current-owner-node tree))
  +  (let ((history (make-history2)))
  +    (prove:is (htree:value (htree:current-owner-node history))
                 "http://example.root/B")
  -    (htree:back tree)
  -    (prove:is (htree:value (htree:current-owner-node tree))
  +    (htree:back history)
  +    (prove:is (htree:value (htree:current-owner-node history))
                 "http://example.root")
  -    (htree:add-child "http://example.root/A" tree)
  -    (prove:is (htree:value (htree:current-owner-node tree))
  +    (htree:add-child "http://example.root/A" history)
  +    (prove:is (htree:value (htree:current-owner-node history))
                 "http://example.root/A")))
   
   (define-class web-page ()
  
positive.code: 
  (prove:plan nil)
  
  (defun make-tree1 ()
    (let ((tree (htree:make)))
      (dolist (url '(
                     "http://example.root"
                     "http://example.root/A"
                     "http://example.root/A1"))
        (htree:add-child url tree))
      (htree:back tree)
      (htree:add-child "http://example.root/A2" tree)
      (htree:back tree 2)
      (htree:add-child "http://example.root/B" tree)
      (htree:add-child "http://example.root/B1" tree)
      (htree:back tree)
      (htree:add-child "http://example.root/B2" tree)
      tree))
  
  (defun make-tree2 ()
    (let ((tree (htree:make)))
      (htree:add-child "http://example.root" tree)
      (htree:add-child "http://example.root/A" tree)
      (htree:back tree)
      (htree:add-child "http://example.root/B" tree)
      tree))
  
  (prove:subtest "Single entry"
    (let ((history (htree:make))
  
negative.code: ;; 2. Remove 2nd owner.  Test if all these nodes got garbage collected, but not
  ;; the default branch nodes.
  (prove:subtest "Owner deletion"
    (let ((history (htree:make)))
      (dolist (url '("http://example.root"
                     "http://example.root/R"
                     "http://example.root/R1"
                     "http://example.root/R2"))
        (htree:add-child url history))
      (htree:add-owner history "parent-owner")
      (htree:set-current-owner history "parent-owner")
      (htree:add-child "http://parent/A" history)
      (htree:add-child "http://parent/A1" history)
      (htree:back history)
      (htree:add-child "http://parent-child/A2" history)
  
      (htree:add-owner history "child-owner" :creator-identifier "parent-owner")
      (htree:set-current-owner history "child-owner")
      (htree:add-child "http://child/A3a" history)
      (htree:back history)
      (htree:add-child "http://child/A3b" history)
  
      (prove:is (length (htree:nodes (htree:owner history "parent-owner")))
                3)
      (prove:is (length (htree:all-current-branch-nodes history))
                5)
      (prove:is (length (htree:nodes (htree:owner history htree:+default-owner+)))
                4)
  
      (htree:delete-owner history "child-owner")
  
      (prove:isnt (htree:current-owner-identifier history)
                  "child-owner")
      (prove:is (htree:owner history "child-owner")
                nil)
      (prove:is (length (htree:nodes (htree:owner history "parent-owner")))
                3)
      (htree:set-current-owner history "parent-owner")
      (prove:is (length (htree:all-current-branch-nodes history))
                5)
      (prove:is (length (htree:nodes (htree:owner history htree:+default-owner+)))
                4)
  
      (dolist (url-owner (list '("http://parent/A" "parent-owner")
  