Can we test the object version at compile-time? Assume that all the branches must be in good style. How to keep track of aliases without conditional statements. Can simply say that it is more expensive to test. Ordering of statements. Have object with part x. reassign this part. A = B. T = B. first not aliased and then aliased. (defmethod (A :alias) (t) (send self ':set-x (send t ':x))) (defmethod (T :m2) (a) (send (send a ':x) ':m3)) Is this in good style? It depends on the context. The following is o.k. (send iA ':alias iT) (send iT ':m2 iA) But (send iT ':m2 iA) by itself violates the Law.