| Composite objects COM ProgID-s and Class ID-sVaryDisp 
        Threading model: ApartmentProgram ID: newObjects.utilctls.VaryDisp
 ClassID: {0EBC57D2-59B0-4407-B42E-B886FA17DEFC}
 Threading model: Both
 Program ID: newObjects.utilctls.VaryDisp.both
 ClassID: {AE85B219-EBC0-4e29-A766-17C6F7A12408}
 Threading model: Free
 Program ID: newObjects.utilctls.VaryDisp.free
 ClassID: {035B1257-A684-455b-B99A-6CA95B05227E}
 VaryDispCreator 
        Threading model: ApartmentProgram ID: newObjects.utilctls.VaryDispCreator
 ClassID: {835294A3-F1D0-4DFB-9C02-464178AE7416}
 Threading model: Both
 Program ID: newObjects.utilctls.VaryDispCreator.both
 ClassID: {8BA4A092-4D55-485b-9CFF-880A9BD2196D}
 Threading model: Free
 Program ID: newObjects.utilctls.VaryDispCreator.free
 ClassID: {76C654E9-3F98-413c-A059-8AD4634CA093}
 Remarks: The other two COM classes involved: VaryDispCtx
              and VaryDispImp are non-creatable. The VaryDispCtx is
              internally created by the VaryDispImp and access to it is
              provided to the scripts and other objects in the composite. The VaryDispImp
              class is the internal holder of the configured scripts and
              objects through the VaryDisp class or through definition
              files. Thus it is created internally whenever a composite object
              is instantiated and then it is controlled by its creator. In fact
              each time you get a composite object you get a VaryDispImp object
              that contains your composite object. This fact remains hidden for
              the both sides - the objects and the scripts in the composite and
              for the outer world (the application that uses the object). From
              outside the applications have access to the VaryDispImp's
              IDispatch interface which translates every call to the appropriate
              composite element (to the configured script or object member for
              the used name/DISPID).  |