anchor.diff:    (with-object-hierarchy (a b (c a))
       (push b (object-parents a))
       (is (equal (list c a b =standard-object= =t=)
  -               (object-hierarchy-list c)))
  +               (object-precedence-list c)))
       (setf (object-parents c) (list b))
       (is (equal (list c b =standard-object= =t=)
  -               (object-hierarchy-list c)))
  +               (object-precedence-list c)))
       (push c (object-parents a))
       (is (equal (list a c b =standard-object= =t=)
  -               (object-hierarchy-list a)))))
  +               (object-precedence-list a)))))
   
   (test cache-update-moderate
     (with-object-hierarchy (a (b a) (c a) (d b) (e c) x)
       (push x (object-parents a))
       (is (equal (list a x =standard-object= =t=)
  -               (object-hierarchy-list a)))
  +               (object-precedence-list a)))
       (is (equal (list b a x =standard-object= =t=)
  -               (object-hierarchy-list b)))
  +               (object-precedence-list b)))
       (is (equal (list c a x =standard-object= =t=)
  -               (object-hierarchy-list c)))
  +               (object-precedence-list c)))
       (is (equal (list d b a x =standard-object= =t=)
  -               (object-hierarchy-list d)))
  +               (object-precedence-list d)))
       (is (equal (list e c a x =standard-object= =t=)
  -               (object-hierarchy-list e)))))
  +               (object-precedence-list e)))))
   
   (test cache-update-extensive
     (with-object-hierarchy (a b c d e f g h)
  
positive.code:             (list g f e c d b a c a)
              (list h g h g f e c e d))
      (is (equal (list c a =standard-object= =t=)
                 (object-hierarchy-list c)))
      (is (equal (list d a =standard-object= =t=)
                 (object-hierarchy-list d)))
      (is (equal (list e c a b =standard-object= =t=)
                 (object-hierarchy-list e)))
      (is (equal (list f d a =standard-object= =t=)
                 (object-hierarchy-list f)))
      (is (equal (list g c f d a =standard-object= =t=)
                 (object-hierarchy-list g)))
      (is (equal (list h e g c b f d a =standard-object= =t=)
                 (object-hierarchy-list h)))))
  
  (def-suite inheritance-predicates :in inheritance)
  (in-suite inheritance-predicates)
  
negative.code:     (is (eq a (car (object-parents c))))
      (is (eq b (car (object-parents d))))
      (is (eq c (cadr (object-parents d)))))
    (signals object-precedence-error
      (with-object-hierarchy (a (b a) (c b) (d a c))
        (declare (ignore d)))))
  
  