In order to support IMDrawable hierarchies, the parent's state must be passed into the IMDrawable::draw call so that the child can concatenate its state with the parent's.
void draw (IGrafPort& parentPort);
An IMDrawable typically concatenates its local state (for example, bundle, matrix) with that of the parent port via one or more ILinkedGrafPort classes. It then calls one or more draw functions on the IGrafPort.
IMDrawable subclasses that need more specialized behavior have to define extra semantics to support this behavior.