// Base class
[abstract]
class __COMTaxonomy
{
};

// Used by GetCLSIDArrayForIID
class __COMInterfaceSet : __COMTaxonomy	// what was __ComMethodSet (otherwise unchanged)
{
	[key]
	string	CLSID;
	string	Name;
	string	IID[];
	string	IIDNames[];
};

// Used by GetCLSIDArrayForNames
class __COMDispatchElement : __COMTaxonomy	// this models a DispatchId/Name mapping
{
	[key]
	string	CLSID;
	[key]
	string	dispID;				// the Dispatch ID of the Method
	[description("")]
	string sName;				// Name (description is the localizable equivalent)
	string sNamedArguments [];		// for named method args only
	string sArgumentDispIDs [];  		// Dispatch IDs of named args
};


// Used by GetCLSIDArrayForIID
// ASSOCIATORS OF Path WHERE RETURNCLASS="__COMInterfaceSet"
[assocation]
class __COMInterfaceSetToClassBinding
{
	[key]
	__COMInterfaceSet ref interfaceSet;
	[key]
	object ref TargetClass;
};

// Used by GetCLSIDArrayForNames
// ASSOCIATORS OF Path WHERE RETURNCLASS="__COMDispatchElement"
[association]
class __COMDispatchElementToClassBinding	// models binding of a late-bound property/method to a class
{
	[key]
	__COMDispatchElement ref dispatchElement;
	[key]
	object ref TargetClass;
};

// Used by GetCLSIDArrayForNames
// SAFEARRAY will contain array of instances of this class
class __COMDispatchInfo
{
	[key]
	string	CLSID;
	[key]
	string	dispID;
	string	sArgumentDispIDs[];
};