anchor.diff:                      (make-instance 'x-tree-node
                                      :children (list (root-node tree) new))))
                  (setf (parent (root-node tree)) new-root
  -                     (split-tree new-root) (cons (split-tree (root-node tree))
  -                                                 (split-tree new))
  +                     (split-tree new-root) (cons (root-node tree) new)
                        (root-node tree) new-root
                        (parent new) new-root)))))))
       tree))
  
positive.code: 
  (defclass x-tree-node (spatial-tree-node)
    ((split-tree :initarg :split-tree :accessor split-tree)))
  (defmethod split-tree ((x spatial-tree-leaf-node))
    x)
  ;;; Do we actually need to keep track of what is and what isn't a
  ;;; supernode?  I'm not sure that we do...
  (defclass x-tree-supernode (x-tree-node)
  
negative.code:                          (rplacd cons (cons *split* new))))))
                 nil)))))))
              
  (defmethod check-consistency progn ((tree x-tree))
    (labels ((%check (node)
               (assert 
                (or (typep node 'spatial-tree-leaf-node)
                    (null (set-difference (children node)
                                          (leaves-of-split-tree
                                           (split-tree node))))))
               (unless (typep node 'spatial-tree-leaf-node)
                 (dolist (child (children node))
                   (%check child)))))
      (%check (root-node tree))))
  