This notation now can be used to express a simple but inefficient rule for constructing type dispatch headers, shown in Figure 7 . Figure 7 is written as an inference rule. The triangles above the supertypes indicate that these types are part of an arbitrary type hierarchy extending above them. The consequent, below the line, states that the layout for T consists of the concatenated layouts for all the supertypes, except that the last dispatch vector has been extended to include the methods of T that are not shared with T 1 . The type T 1 is called the primary supertype , since its last dispatch vector is merged with that of T .
T n are secondary supertypes .
Although this rule is not the actual bidirectional-layout rule, it has several instructive similarities. A reference to an object of type T points to the last dispatch vector in the layout. Conversion to an indirect supertype of T requires the subtraction of a sum of these constant offsets, which is just a constant itself. Calls to any methods of T , given an object of static type T , require only the standard dispatch sequence, because all of the methods of T are present in the last dispatch vector. Layout Rules Andrew C. Myers.