I add a number of facilities to those in ClassDescription: * A set of all my subclasses (defined in ClassDescription, but only used here and below) * A name by which I can be found in a SystemDictionary * A classPool for class variables shared between this class and its metaclass * A list of sharedPools which probably should be supplanted by some better mechanism. My instances describe the representation and behavior of objects. I add more comprehensive programming support facilities to the basic attributes of Behavior and the descriptive facilities of ClassDescription. The slot 'subclasses' is a redundant structure. It is never used during execution, but is used by the development system to simplify or speed certain operations.
~
If we look at this in terms of the piece of paper analogy, instance variables inside an object are circles inside an enclosing circle. To distinguish between instance variables in the context of an object, we typically name them just like we name circles. See Doughnut.
Smalltalk sentences are no more than invocations of bits of behavior, where the specific behaviors in question are distinguished and called upon by means of their selectors.