----- Original Message -----
Every object's "klass" pointer will point to its singleton class, if
it has one.  I think this is consistent as between the two diagrams.
In 19.2, Guitar's klass points to Guitar', and in 19.3, a's klass
points to a's singleton class.
----------------------------

Alright... I think I was somewhat confused, but I still don't really feel
like my question was answered.  Let's pretend I don't know whether `obj' is
the string `a' from page 246, or the Guitar class from page 244, or any
other object.  I'll show what happens to `obj' when we give it a singleton
class.  First, we'll assume:

  obj.class             #  -->  SomeClass
  SomeClass.superclass  #  -->  OtherClass

So here's how things look initially:

     obj
    -----
    klass
      |
      |
      V

  SomeClass    +--->  OtherClass
  ---------    |      ----------
    super -----+


(The klass pointers in all classes points to Class, and we don't care what
the super pointer for OtherClass is.)

Then we do something like `class << obj; end' and see how `obj' changes:

     obj
    -----
    klass
      |
      |
      V

  singleton    +--->  SomeClass    +--->  OtherClass
  ---------    |      ---------    |      ----------
    super -----+        super -----+


Again, all of the classes (including the singleton class) have their klass
pointer going to Class.

The above model is correct (as far as I know) if we are talking about
non-class object, but incorrect if we are talking about classes.  The
difference is in the singleton's super pointer.  If it did work just like
with non-classes, then the super pointer of Guitar' (Guitar's singleton
class) would point to Class, which would be SomeClass in the above example.

Ruby really goes out of its way to prevent you from subclassing Class,
though, which is what that would be.  Why is this?  Why have the singleton's
super pointer point to another singleton class?  I thought the problem with
subclassing Class was that you didn't want a subclass of Class to be
instantiated (since it would be like a class, but without Class as its
superclass, or else it would be counterintuitive), but singleton classes
can't be instantiated, so it wouldn't be a problem!

Chris