1. A method for performing one or more type operations using a plurality of type descriptors, the plurality of type descriptors including a canonical type descriptor that conforms to a set of canonicalization rules and an auxiliary type descriptor, the canonical type descriptor and auxiliary type descriptor being distinct and both being associated with a frozen object, the frozen object having a layout that is completed at compile time and allocated at compile time and thereby existing as an object in a compiled executable first module, the first module including both the frozen object and the auxiliary type descriptor, the method being performed upon one or more computer processors, the method comprising: an indirection component through which the auxiliary type descriptor is associated with the canonical type descriptor, wherein the indirection component is a component that may be written to at run-time to thereby cause the indirection component to point to the canonicalized type descriptor without causing the indirection component or a portion thereof to become private; for a first set of one of more operations, an act of determining that the auxiliary type descriptor within the first module will be sufficient to perform the operation, and an act of using the auxiliary type descriptor, and not the canonical type descriptor, to perform the operation; and for a second set of one or more operations, an act of determining that the auxiliary type descriptor will not be sufficient to perform the operation, an act of using the auxiliary type descriptor to access the canonical type descriptor, wherein the canonical type descriptor is included in a second module, and an act of using the canonical type descriptor within the second module to perform the operation.