When the ModelDoc2 object already exists, why was it necessary to create additional object ModelDocExtension?
Can we logically differentiate / catagorize the functions handled by the two?
In other words, how can I guess that certain functionality must belong to ModelDocExtension & not ModelDoc2?
This doesn't answer your broader question but it might be helpful. You don't normally need to store a reference to the ModelDocExtension. You can usually access it with:
swModelDoc.ModelDocExtension.MethodYouWantToUse
where swModelDoc is a ModelDoc2.