### Using Bundles in the Modeling Hierarchy

A graphic object hierarchy is traversed from the root to the leaves with the graphics state passed from parent to child through inheritance. Bundles are inherited through the modeling hierarchy by concatenating the object bundle with the state of the current IGrafPort.

Bundle inheritance uses the following rules:

- If an object does not have a bundle, the bundle is inherited. Otherwise it uses its bundle.
- If a bundle does not have an attribute, the attribute is inherited. Otherwise it uses the bundle's attribute.

There are two reasons for bundle inheritance: defaulting and saving storage.

Defaulting specifies that the parent fill in the bundle information. For instance, if the color of a graphic in a group is inherited, defaulting specifies that the subgroup graphic be filled in by the group's color.

If all frame paints are black, the black paint needs to be specified only in the root, thus saving storage.

Using Polymorphic Attributes in IGrafBundle