I was wondering if someone could help me understand why there's a parallel =
class hierarchy - there's the 'real' class objects which holds onto instanc=
e methods, and the 'virtual' class object that holds onto class methods.

I can see how this design can make method lookup somewhat faster since it a=
voids having to do a test and branch operation before method dispatch.

But is there some other non-obvious corner case that drove this design? In =
other words, if there were an implementation that had a dictionary for inst=
ance methods and class methods on the same class object, would this break s=
omething?

Thanks,
-John