// Generated IDL File (by Great Migrations Studio) 
// Created: 12/3/2025 09:31:29 AM
// Source: C:\windows\SysWow64\TLBINF32.DLL
// typelib filename: TLBINF32.DLL
[
    uuid(8B217740-717D-11CE-AB5B-D41203C10000),
    version(1.0),
    helpstring("TypeLib Information"),
    helpfile("C:\windows\system32\tlbinf32.chm"),
    helpcontext(0x0000040c)
]
library TLI
{
    // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib

    interface VarTypeInfo;
    interface ParameterInfo;
    interface Parameters;
    interface MemberInfo;
    interface Members;
    interface InterfaceInfo;
    interface _BaseTypeInfos;
    interface Interfaces;
    interface CoClassInfo;
    interface CoClasses;
    interface ConstantInfo;
    interface Constants;
    interface DeclarationInfo;
    interface Declarations;
    interface _SearchHelper;
    interface TypeInfo;
    interface _TypeLibInfo;
    interface SearchItem;
    interface SearchResults;
    interface ListBoxNotification;
    interface CustomSort;
    interface CustomFilter;
    interface _TLIApplication;
    interface TypeInfos;
    interface RecordInfo;
    interface Records;
    interface IntrinsicAliasInfo;
    interface IntrinsicAliases;
    interface CustomData;
    interface CustomDataCollection;
    interface UnionInfo;
    interface Unions;
    coclass SearchHelper;
    coclass TypeLibInfo;
    coclass TLIApplication;

    [
        dllname("TlbInf32.dll")
    ]
    module _DirectCalls {
        [entry(0x60000000), hidden]
        HRESULT _stdcall NewGuid([out, retval] BSTR* retVal);
        [entry(0x60000001), hidden, helpstring("ODL strings representations"), helpcontext(0x000003f5)]
        HRESULT _stdcall GetTypeInfoAttributeStrings(
            [in] short AttributeMask,
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [entry(0x60000002), hidden, helpstring("ODL strings representations"), helpcontext(0x000003f5)]
        HRESULT _stdcall GetImplAttributeStrings(
            [in] short AttributeMask,
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [entry(0x60000003), hidden, helpstring("ODL strings representations"), helpcontext(0x000003f5)]
        HRESULT _stdcall GetLibraryAttributeStrings(
            [in] short AttributeMask,
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [entry(0x60000004), hidden, helpstring("ODL strings representations"), helpcontext(0x000003f5)]
        HRESULT _stdcall GetFunctionAttributeStrings(
            [in] short AttributeMask,
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [entry(0x60000005), hidden, helpstring("ODL strings representations"), helpcontext(0x000003f5)]
        HRESULT _stdcall GetVariableAttributeStrings(
            [in] short AttributeMask,
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [entry(0x60000006), hidden]
        HRESULT _stdcall SwapStringArrays(
            [in, out] SAFEARRAY(BSTR)* DestArray,
            [in, out] SAFEARRAY(BSTR)* SrcArray);
        [entry(0x60000007), hidden]
        HRESULT _stdcall SwapLongArrays(
            [in, out] SAFEARRAY(long)* DestArray,
            [in, out] SAFEARRAY(long)* SrcArray);
        [entry(0x60000008), hidden]
        HRESULT _stdcall AddressOfStringElement(
            [in, out] BSTR* InString,
            [in] short Position,
            [out, retval] long* retVal);
        [entry(0x60000009), hidden]
        short _stdcall LOWORD([in] long DWORD);
        [entry(0x6000000a), hidden]
        short _stdcall HIWORD([in] long DWORD);
        [entry(0x6000000b), hidden]
        long _stdcall MAKELONG(
            [in] short LOWORD,
            [in] short HIWORD);
        [entry(0x6000000c), hidden]
        short _stdcall LOBYTE([in] short WORD);
        [entry(0x6000000d), hidden]
        short _stdcall HIBYTE([in] short WORD);
        [entry(0x6000000e), hidden]
        short _stdcall MAKEWORD(
            [in] short LOBYTE,
            [in] short HIBYTE);
    };
    typedef [helpstring("Custom errors raised by TLI"), helpcontext(0x00000413)]
    enum {
        tliErrNoCurrentTypelib = 0x80040201,
        tliErrCantLoadLibrary = 0x80040202,
        tliErrTypeLibNotRegistered = 0x80040203,
        tliErrSearchResultsChanged = 0x80040204,
        tliErrNotApplicable = 0x80040205,
        tliErrIncompatibleData = 0x80040206,
        tliErrIncompatibleSearchType = 0x80040207,
        tliErrIncompatibleTypeKind = 0x80040208,
        tliErrInaccessibleImportLib = 0x80040209,
        tliErrNoDefaultValue = 0x8004020a,
        tliErrDataNotAvailable = 0x8004020b,
        tliErrNotAnEntryPoint = 0x8004020c,
        tliErrStopFiltering = 0x8004020d,
        tliErrArrayBoundsNotAvailable = 0x8004020e,
        tliErrSearchResultsNotSorted = 0x8004020f,
        tliErrTypeNotArray = 0x80040210
    } TliErrors;

    typedef [helpstring("OLE Automation TYPEFLAG values"), helpcontext(0x000003f4)]
    enum {
        TYPEFLAG_NONE = 0,
        TYPEFLAG_FAPPOBJECT = 1,
        TYPEFLAG_FCANCREATE = 2,
        TYPEFLAG_FLICENSED = 4,
        TYPEFLAG_FPREDECLID = 8,
        TYPEFLAG_FHIDDEN = 16,
        TYPEFLAG_FCONTROL = 32,
        TYPEFLAG_FDUAL = 64,
        TYPEFLAG_FNONEXTENSIBLE = 128,
        TYPEFLAG_FOLEAUTOMATION = 256,
        TYPEFLAG_FRESTRICTED = 512,
        TYPEFLAG_FAGGREGATABLE = 1024,
        TYPEFLAG_FREPLACEABLE = 2048,
        TYPEFLAG_FDISPATCHABLE = 4096,
        TYPEFLAG_FREVERSEBIND = 8192,
        TYPEFLAG_FPROXY = 16384,
        TYPEFLAG_DEFAULTFILTER = 528,
        TYPEFLAG_COCLASSATTRIBUTES = 1599,
        TYPEFLAG_INTERFACEATTRIBUTES = 31696,
        TYPEFLAG_DISPATCHATTRIBUTES = 23184,
        TYPEFLAG_ALIASATTRIBUTES = 528,
        TYPEFLAG_MODULEATTRIBUTES = 528,
        TYPEFLAG_ENUMATTRIBUTES = 528,
        TYPEFLAG_RECORDATTRIBUTES = 528,
        TYPEFLAG_UNIONATTRIBUTES = 528
    } TypeFlags;

    typedef [helpstring("OLE Automation IMPLTYPEFLAG values"), helpcontext(0x000003f4)]
    enum {
        IMPLTYPEFLAG_FDEFAULT = 1,
        IMPLTYPEFLAG_FSOURCE = 2,
        IMPLTYPEFLAG_FRESTRICTED = 4,
        IMPLTYPEFLAG_FDEFAULTVTABLE = 8
    } ImplTypeFlags;

    typedef [helpstring("OLE Automation TYPEKIND values"), helpcontext(0x000003fa)]
    enum {
        TKIND_ENUM = 0,
        TKIND_RECORD = 1,
        TKIND_MODULE = 2,
        TKIND_INTERFACE = 3,
        TKIND_DISPATCH = 4,
        TKIND_COCLASS = 5,
        TKIND_ALIAS = 6,
        TKIND_UNION = 7,
        TKIND_MAX = 8
    } TypeKinds;

    typedef [helpstring("OLE Automation FUNCFLAG values"), helpcontext(0x000003f4)]
    enum {
        FUNCFLAG_NONE = 0,
        FUNCFLAG_FRESTRICTED = 1,
        FUNCFLAG_FSOURCE = 2,
        FUNCFLAG_FBINDABLE = 4,
        FUNCFLAG_FREQUESTEDIT = 8,
        FUNCFLAG_FDISPLAYBIND = 16,
        FUNCFLAG_FDEFAULTBIND = 32,
        FUNCFLAG_FHIDDEN = 64,
        FUNCFLAG_FUSESGETLASTERROR = 128,
        FUNCFLAG_FDEFAULTCOLLELEM = 256,
        FUNCFLAG_FUIDEFAULT = 512,
        FUNCFLAG_FNONBROWSABLE = 1024,
        FUNCFLAG_FREPLACEABLE = 2048,
        FUNCFLAG_FIMMEDIATEBIND = 4096,
        FUNCFLAG_DEFAULTFILTER = 65
    } FuncFlags;

    typedef [helpstring("OLE Automation VARFLAG values"), helpcontext(0x000003f4)]
    enum {
        VARFLAG_NONE = 0,
        VARFLAG_FREADONLY = 1,
        VARFLAG_FSOURCE = 2,
        VARFLAG_FBINDABLE = 4,
        VARFLAG_FREQUESTEDIT = 8,
        VARFLAG_FDISPLAYBIND = 16,
        VARFLAG_FDEFAULTBIND = 32,
        VARFLAG_FHIDDEN = 64,
        VARFLAG_FRESTRICTED = 128,
        VARFLAG_FDEFAULTCOLLELEM = 256,
        VARFLAG_FUIDEFAULT = 512,
        VARFLAG_FNONBROWSABLE = 1024,
        VARFLAG_FREPLACEABLE = 2048,
        VARFLAG_FIMMEDIATEBIND = 4096,
        VARFLAG_DEFAULTFILTER = 192
    } VarFlags;

    typedef [helpstring("OLE Automation SYS values"), helpcontext(0x00000410)]
    enum {
        SYS_WIN16 = 0,
        SYS_WIN32 = 1,
        SYS_MAC = 2
    } SysKinds;

    typedef [helpstring("OLE Automation LIBFLAG values"), helpcontext(0x000003f4)]
    enum {
        LIBFLAG_FRESTRICTED = 1,
        LIBFLAG_FCONTROL = 2,
        LIBFLAG_FHIDDEN = 4,
        LIBFLAG_FHASDISKIMAGE = 8
    } LibFlags;

    typedef [helpstring("OLE Automation INVOKEKIND values"), helpcontext(0x0000042f)]
    enum {
        INVOKE_UNKNOWN = 0,
        INVOKE_FUNC = 1,
        INVOKE_PROPERTYGET = 2,
        INVOKE_PROPERTYPUT = 4,
        INVOKE_PROPERTYPUTREF = 8,
        INVOKE_EVENTFUNC = 16,
        INVOKE_CONST = 32
    } InvokeKinds;

    typedef [helpstring("OLE Automation IDLFLAG values"), helpcontext(0x0000042a)]
    enum {
        IDLFLAG_NONE = 0,
        IDLFLAG_FIN = 1,
        IDLFLAG_FOUT = 2,
        IDLFLAG_FLCID = 4,
        IDLFLAG_FRETVAL = 8
    } IDLFlags;

    typedef [helpstring("OLE Automation PARAMFLAG values"), helpcontext(0x0000042a)]
    enum {
        PARAMFLAG_NONE = 0,
        PARAMFLAG_FIN = 1,
        PARAMFLAG_FOUT = 2,
        PARAMFLAG_FLCID = 4,
        PARAMFLAG_FRETVAL = 8,
        PARAMFLAG_FOPT = 16,
        PARAMFLAG_FHASDEFAULT = 32,
        PARAMFLAG_FHASCUSTDATA = 64
    } ParamFlags;

    typedef [helpstring("OLE Automation DESCKIND values"), helpcontext(0x00000432)]
    enum {
        DESCKIND_NONE = 0,
        DESCKIND_FUNCDESC = 1,
        DESCKIND_VARDESC = 2
    } DescKinds;

    typedef [helpstring("OLE Automation VARIANT types"), helpcontext(0x0000043a)]
    enum {
        VT_EMPTY = 0,
        VT_NULL = 1,
        VT_I2 = 2,
        VT_I4 = 3,
        VT_R4 = 4,
        VT_R8 = 5,
        VT_CY = 6,
        VT_DATE = 7,
        VT_BSTR = 8,
        VT_DISPATCH = 9,
        VT_ERROR = 10,
        VT_BOOL = 11,
        VT_VARIANT = 12,
        VT_UNKNOWN = 13,
        VT_DECIMAL = 14,
        VT_I1 = 16,
        VT_UI1 = 17,
        VT_UI2 = 18,
        VT_UI4 = 19,
        VT_I8 = 20,
        VT_UI8 = 21,
        VT_INT = 22,
        VT_UINT = 23,
        VT_VOID = 24,
        VT_HRESULT = 25,
        VT_PTR = 26,
        VT_SAFEARRAY = 27,
        VT_CARRAY = 28,
        VT_USERDEFINED = 29,
        VT_LPSTR = 30,
        VT_LPWSTR = 31,
        VT_RECORD = 36,
        VT_FILETIME = 64,
        VT_BLOB = 65,
        VT_STREAM = 66,
        VT_STORAGE = 67,
        VT_STREAMED_OBJECT = 68,
        VT_STORED_OBJECT = 69,
        VT_BLOB_OBJECT = 70,
        VT_CF = 71,
        VT_CLSID = 72,
        VT_VECTOR = 4096,
        VT_ARRAY = 8192,
        VT_BYREF = 16384,
        VT_RESERVED = 32768
    } TliVarType;

    typedef [helpstring("Determines content of SearchResults collection"), helpcontext(0x00000426)]
    enum {
        tliStDefault = 4096,
        tliStClasses = 1,
        tliStEvents = 2,
        tliStConstants = 4,
        tliStDeclarations = 8,
        tliStAppObject = 16,
        tliStRecords = 32,
        tliStIntrinsicAliases = 64,
        tliStUnions = 128,
        tliStAll = 239
    } TliSearchTypes;

    typedef [helpstring("Values for window class of hWnd in Get*Direct methods"), helpcontext(0x00000444)]
    enum {
        tliWtListBox = 0,
        tliWtComboBox = 1
    } TliWindowTypes;

    typedef [helpstring("Determine ItemData content for GetMembers*Direct methods"), helpcontext(0x00000443)]
    enum {
        tliIdtMemberID = 0,
        tliIdtInvokeKinds = 1
    } TliItemDataTypes;

    [
        odl,
        uuid(8B21774B-717D-11CE-AB5B-D41203C10000),
        helpstring("VarType information for parameters and return types"),
        helpcontext(0x000003f3),
        dual,
        nonextensible,
        oleautomation
    ]
    interface VarTypeInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] VarTypeInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0x60020002), propget, restricted]
        HRESULT _OldVarType();
        [id(0x60020003), propget, helpstring("Type information for VT_PTR VarType"), helpcontext(0x0000043c)]
        HRESULT TypeInfo([out, retval] TypeInfo** retVal);
        [id(0x60020004), propget, helpstring("TypeInfo number for 0 VarType (Cheaper than TypeInfo property)"), helpcontext(0x0000043c)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x60020005), propget, helpstring("Get a variant with this VarType"), helpcontext(0x0000043d)]
        HRESULT TypedVariant([out, retval] VARIANT* retVal);
        [id(0x60020006), propget, helpstring("Is TypeInfo external to this library"), helpcontext(0x00000439)]
        HRESULT IsExternalType([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020007), propget, helpstring("External typelib.  Same as TypeInfo.Parent."), helpcontext(0x00000439)]
        HRESULT TypeLibInfoExternal([out, retval] TypeLibInfo** retVal);
        [id(0x60020008), propget, helpstring("Dereferencing level of type"), helpcontext(0x0000043b)]
        HRESULT PointerLevel([out, retval] short* retVal);
        [id(00000000), propget, helpstring("VarType of Parameter"), helpcontext(0x0000043a)]
        HRESULT VarType([out, retval] TliVarType* retVal);
        [id(0x6002000a), helpstring("Get bounds for VT_VECTOR array.  LBound in column 1, UBound in column 2."), helpcontext(0x00000437)]
        HRESULT ArrayBounds(
            [out] SAFEARRAY(long)* Bounds,
            [out, retval] short* retVal);
        [id(0x6002000b), propget, helpstring("Dereferencing level for type of an array element"), helpcontext(0x00000438)]
        HRESULT ElementPointerLevel([out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217749-717D-11CE-AB5B-D41203C10000),
        helpstring("Parameter Information"),
        helpcontext(0x000003ee),
        dual,
        nonextensible,
        oleautomation
    ]
    interface ParameterInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] ParameterInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Optional Parameter"), helpcontext(0x00000429)]
        HRESULT Optional([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldFlags();
        [id(0x60020005), propget, helpstring("VarTypeInfo object for this parameter"), helpcontext(0x000003f3)]
        HRESULT VarTypeInfo([out, retval] VarTypeInfo** retVal);
        [id(0x60020006), propget, helpstring("Default Parameter"), helpcontext(0x00000429)]
        HRESULT Default([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020007), propget, helpstring("Default value"), helpcontext(0x00000429)]
        HRESULT DefaultValue([out, retval] VARIANT* retVal);
        [id(0x60020008), propget, helpstring("Check if custom data is available"), helpcontext(0x000003eb)]
        HRESULT HasCustomData([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020009), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x6002000a), propget, helpstring("Parameter Flags"), helpcontext(0x0000042a)]
        HRESULT Flags([out, retval] ParamFlags* retVal);
    };

    [
        odl,
        uuid(8B21774A-717D-11CE-AB5B-D41203C10000),
        helpstring("Parameters Collection"),
        helpcontext(0x000003ef),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Parameters : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] Parameters** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0xfffffffc)]
        HRESULT _NewEnum([out, retval] IUnknown** retVal);
        [id(00000000), propget, helpstring("ParameterInfo object"), helpcontext(0x000003ee)]
        HRESULT Item(
            [in] short Index,
            [out, retval] ParameterInfo** retVal);
        [id(0x60020004), propget, helpstring("Number of items in collection"), helpcontext(0x00000428)]
        HRESULT Count([out, retval] short* retVal);
        [id(0x60020005), propget, helpstring("Number of optional parameters"), helpcontext(0x00000429)]
        HRESULT OptionalCount([out, retval] short* retVal);
        [id(0x60020006), propget, helpstring("Number of default parameters.  Not included in optional count."), helpcontext(0x00000429)]
        HRESULT DefaultCount([out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217747-717D-11CE-AB5B-D41203C10000),
        helpstring("MemberInfo object"),
        helpcontext(0x000003ec),
        dual,
        nonextensible,
        oleautomation
    ]
    interface MemberInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] MemberInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020004), propget, helpstring("HelpContext for the member"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020005), propget, helpstring("HelpFile for the member"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020006), propget, helpstring("Parameters Collection"), helpcontext(0x000003ef)]
        HRESULT Parameters([out, retval] Parameters** retVal);
        [id(0x60020007), propget, helpstring("VarTypeInfo object for returned type"), helpcontext(0x000003f3)]
        HRESULT ReturnType([out, retval] VarTypeInfo** retVal);
        [id(0x60020008), propget, helpstring("Type attribute mask for the member"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020009), propget, helpstring("Type attributes for the member"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x6002000a), propget, restricted]
        HRESULT _OldDescKind();
        [id(0x6002000b), propget, helpstring("Value of the member, ConstantInfo only"), helpcontext(0x00000434)]
        HRESULT Value([out, retval] VARIANT* retVal);
        [id(0x6002000c), propget, helpstring("MemberId (DispId) for member function or variable."), helpcontext(0x00000430)]
        HRESULT MemberId([out, retval] long* retVal);
        [id(0x6002000d), propget, helpstring("VTable Offset of member.  -1 if not available."), helpcontext(0x00000435)]
        HRESULT VTableOffset([out, retval] short* retVal);
        [id(0x6002000e), propget, helpstring("InvokeKind of member"), helpcontext(0x0000042f)]
        HRESULT InvokeKind([out, retval] InvokeKinds* retVal);
        [id(0x6002000f), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020010), propget, helpstring("DescKind of member."), helpcontext(0x00000432)]
        HRESULT DescKind([out, retval] DescKinds* retVal);
        [id(0x60020011), helpstring("Get Dll name and entry point."), helpcontext(0x00000433)]
        HRESULT GetDllEntry(
            [out] BSTR* DllName,
            [out] BSTR* EntryName,
            [out] short* Ordinal);
        [id(0x60020012), propget, helpstring("Helpstring for the member"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020013), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020014), propget, helpstring("HelpStringContext for the member"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
        [id(0x60020015), propget, helpstring("Calling convention of member"), helpcontext(0x00000431)]
        HRESULT CallConv([out, retval] CallConvs* retVal);
    };

    [
        odl,
        uuid(8B217748-717D-11CE-AB5B-D41203C10000),
        helpstring("Members Collection"),
        helpcontext(0x000003ed),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Members : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] Members** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0xfffffffc)]
        HRESULT _NewEnum([out, retval] IUnknown** retVal);
        [id(00000000), propget, helpstring("MemberInfo object"), helpcontext(0x000003ec)]
        HRESULT Item(
            [in] short Index,
            [out, retval] MemberInfo** retVal);
        [id(0x60020004), propget, helpstring("Number of items in collection"), helpcontext(0x00000428)]
        HRESULT Count([out, retval] short* retVal);
        [id(0x60020005), propput, helpstring("Method exclusion filter"), helpcontext(0x00000427)]
        HRESULT FuncFilter([in] FuncFlags retVal);
        [id(0x60020005), propget, helpstring("Method exclusion filter"), helpcontext(0x00000427)]
        HRESULT FuncFilter([out, retval] FuncFlags* retVal);
        [id(0x60020007), propput, helpstring("Property exclusion filter"), helpcontext(0x00000427)]
        HRESULT VarFilter([in] VarFlags retVal);
        [id(0x60020007), propget, helpstring("Property exclusion filter"), helpcontext(0x00000427)]
        HRESULT VarFilter([out, retval] VarFlags* retVal);
        [id(0x60020009), restricted]
        HRESULT _OldFillList();
        [id(0x6002000a), propget, helpstring("Get members without named duplicates"), helpcontext(0x00000436)]
        HRESULT GetFilteredMembers(
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x6002000b), helpstring("Get members without named duplicates (Clear and fill hWnd)"), helpcontext(0x00000436)]
        HRESULT GetFilteredMembersDirect(
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(0)] TliItemDataTypes ItemDataType,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217741-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface InterfaceInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] InterfaceInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), propget, helpstring("VTable version of this interface"), helpcontext(0x00000402)]
        HRESULT VTableInterface([out, retval] InterfaceInfo** retVal);
        [id(0x6002000d), propget, helpstring("Member by name or MemID"), helpcontext(0x000003fd)]
        HRESULT GetMember(
            [in] VARIANT Index,
            [out, retval] MemberInfo** retVal);
        [id(0x6002000e), propget, helpstring("Members collection"), helpcontext(0x000003ed)]
        HRESULT Members([out, retval] Members** retVal);
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), propget, helpstring("Interfaces collection"), helpcontext(0x00000401)]
        HRESULT ImpliedInterfaces([out, retval] Interfaces** retVal);
        [id(0x60020011), restricted, hidden]
        HRESULT _DefaultInterface();
        [id(0x60020012), restricted, hidden]
        HRESULT _DefaultEventInterface();
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B217750-717D-11CE-AB5B-D41203C10000),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface _BaseTypeInfos : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TypeInfos** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0xfffffffc)]
        HRESULT _NewEnum([out, retval] IUnknown** retVal);
        [id(0x60020003), propget, helpstring("Number of items in collection"), helpcontext(0x00000428)]
        HRESULT Count([out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217742-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Interfaces : _BaseTypeInfos {
        [id(00000000), propget, helpstring("InterfaceInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] InterfaceInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] InterfaceInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] InterfaceInfo** retVal);
    };

    [
        odl,
        uuid(8B217743-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CoClassInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] CoClassInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), restricted, hidden]
        HRESULT _placeholder_VTableInterface();
        [id(0x6002000d), restricted, hidden]
        HRESULT _placeholder_GetMember();
        [id(0x6002000e), restricted, hidden]
        HRESULT _placeholder_Members();
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), propget, helpstring("Interfaces collection"), helpcontext(0x00000401)]
        HRESULT Interfaces([out, retval] Interfaces** retVal);
        [id(0x60020011), propget, helpstring("Information for Default Interface"), helpcontext(0x000003ff)]
        HRESULT DefaultInterface([out, retval] InterfaceInfo** retVal);
        [id(0x60020012), propget, helpstring("Information for Default Event Interface"), helpcontext(0x000003ff)]
        HRESULT DefaultEventInterface([out, retval] InterfaceInfo** retVal);
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B217744-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CoClasses : _BaseTypeInfos {
        [id(00000000), propget, helpstring("CoClassInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] CoClassInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] CoClassInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] CoClassInfo** retVal);
    };

    [
        odl,
        uuid(8B21774D-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface ConstantInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TypeInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), restricted, hidden]
        HRESULT _placeholder_VTableInterface();
        [id(0x6002000d), propget, helpstring("Member by name or MemID"), helpcontext(0x000003fd)]
        HRESULT GetMember(
            [in] VARIANT Index,
            [out, retval] MemberInfo** retVal);
        [id(0x6002000e), propget, helpstring("Members collection"), helpcontext(0x000003ed)]
        HRESULT Members([out, retval] Members** retVal);
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), restricted, hidden]
        HRESULT _ImpliedInterfaces();
        [id(0x60020011), restricted, hidden]
        HRESULT _DefaultInterface();
        [id(0x60020012), restricted, hidden]
        HRESULT _DefaultEventInterface();
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B21774C-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Constants : _BaseTypeInfos {
        [id(00000000), propget, helpstring("ConstantInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] ConstantInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] ConstantInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] ConstantInfo** retVal);
    };

    [
        odl,
        uuid(8B21774F-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface DeclarationInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] DeclarationInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), restricted, hidden]
        HRESULT _placeholder_VTableInterface();
        [id(0x6002000d), propget, helpstring("Member by name or MemID"), helpcontext(0x000003fd)]
        HRESULT GetMember(
            [in] VARIANT Index,
            [out, retval] MemberInfo** retVal);
        [id(0x6002000e), propget, helpstring("Members collection"), helpcontext(0x000003ed)]
        HRESULT Members([out, retval] Members** retVal);
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), restricted, hidden]
        HRESULT _ImpliedInterfaces();
        [id(0x60020011), restricted, hidden]
        HRESULT _DefaultInterface();
        [id(0x60020012), restricted, hidden]
        HRESULT _DefaultEventInterface();
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B21774E-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Declarations : _BaseTypeInfos {
        [id(00000000), propget, helpstring("DeclarationInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] DeclarationInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] DeclarationInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] DeclarationInfo** retVal);
    };

    [
        odl,
        uuid(8B217751-717D-11CE-AB5B-D41203C10000),
        helpstring("Helper object for GetMembersWithSubString and multiple TypeLibs"),
        helpcontext(0x0000042b),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface _SearchHelper : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TypeLibInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0x60020002)]
        HRESULT _OldInit();
        [id(0x60020003), propget, helpstring("If Name already in collection, then return True.  Otherwise, add it."), helpcontext(0x0000042b)]
        HRESULT CheckHaveMatch(
            [in] BSTR Name,
            [out, retval] VARIANT_BOOL* retVal);
        [id(0x60020004), propget, hidden, helpstring("Obsolete.  SysKind, GrowSize ignored."), helpcontext(0x0000042b)]
        HRESULT Init(
            [in] SysKinds SysKind,
            [in] long LCID,
            [in, optional, defaultvalue(100)] short GrowSize);
    };

    [
        uuid(8B217752-717D-11CE-AB5B-D41203C10000),
        helpstring("Helper object for GetMembersWithSubString and multiple TypeLibs"),
        helpcontext(0x0000042b)
    ]
    coclass SearchHelper {
        [default] interface _SearchHelper;
    };

    [
        odl,
        uuid(8B217759-717D-11CE-AB5B-D41203C10000),
        helpstring("TypeInfo Information"),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface TypeInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TypeInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), propget, helpstring("VTable version of this interface"), helpcontext(0x00000402)]
        HRESULT VTableInterface([out, retval] InterfaceInfo** retVal);
        [id(0x6002000d), propget, helpstring("Member by name or MemID"), helpcontext(0x000003fd)]
        HRESULT GetMember(
            [in] VARIANT Index,
            [out, retval] MemberInfo** retVal);
        [id(0x6002000e), propget, helpstring("Members collection"), helpcontext(0x000003ed)]
        HRESULT Members([out, retval] Members** retVal);
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), propget, helpstring("Interfaces collection"), helpcontext(0x00000401)]
        HRESULT Interfaces([out, retval] Interfaces** retVal);
        [id(0x60020011), propget, helpstring("Information for Default Interface.  CoClassInfo only."), helpcontext(0x000003ff)]
        HRESULT DefaultInterface([out, retval] InterfaceInfo** retVal);
        [id(0x60020012), propget, helpstring("Information for Default Event Interface.  CoClassInfo only."), helpcontext(0x000003ff)]
        HRESULT DefaultEventInterface([out, retval] InterfaceInfo** retVal);
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B217745-717D-11CE-AB5B-D41203C10000),
        helpstring("TypeLib information"),
        helpcontext(0x000003f2),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface _TypeLibInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TypeLibInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0x60020002), propget, helpstring("Name of file containing TypeLib"), helpcontext(0x00000406)]
        HRESULT ContainingFile([out, retval] BSTR* retVal);
        [id(0x60020002), propput, helpstring("Name of file containing TypeLib"), helpcontext(0x00000406)]
        HRESULT ContainingFile([in] BSTR retVal);
        [id(0x60020004), helpstring("Load a registered typelib"), helpcontext(0x00000407)]
        HRESULT LoadRegTypeLib(
            [in] BSTR TypeLibGuid,
            [in] short MajorVersion,
            [in] short MinorVersion,
            [in] long LCID);
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020006), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020007), propget, helpstring("HelpContext for the library"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020008), propget, helpstring("HelpFile for the library"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020009), propget, helpstring("Registry format of TypeLib GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x6002000a), propget, helpstring("LCID of TypeLib"), helpcontext(0x00000404)]
        HRESULT LCID([out, retval] long* retVal);
        [id(0x6002000b), propget, restricted]
        HRESULT _OldSysKind();
        [id(0x6002000c), propget, helpstring("Major Version of TypeLib"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x6002000d), propget, helpstring("Minor Version of TypeLib"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002000e), propget, helpstring("Type attribute mask for the library"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x6002000f), propget, helpstring("Type attributes for the library"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020010), propget, helpstring("The CoClasses for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT CoClasses([out, retval] CoClasses** retVal);
        [id(0x60020011), propget, helpstring("The interfaces for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT Interfaces([out, retval] Interfaces** retVal);
        [id(0x60020012), propget, helpstring("The constants for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT Constants([out, retval] Constants** retVal);
        [id(0x60020013), propget, helpstring("The declarations for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT Declarations([out, retval] Declarations** retVal);
        [id(0x60020014), propget, helpstring("Total TypeInfos in typelib"), helpcontext(0x00000414)]
        HRESULT TypeInfoCount([out, retval] short* retVal);
        [id(0x60020015), propget, restricted]
        HRESULT _OldGetTypeKind();
        [id(0x60020016), propget, helpstring("Get TypeInfo directly by Name or TypeInfoNumber"), helpcontext(0x00000416)]
        HRESULT GetTypeInfo(
            [in] VARIANT* Index,
            [out, retval] TypeInfo** retVal);
        [id(0x60020017), propget, helpstring("Get interface number by name"), helpcontext(0x00000415)]
        HRESULT GetTypeInfoNumber(
            [in] BSTR Name,
            [out, retval] short* retVal);
        [id(0x60020018), helpstring("Is this the same TypeLib?"), helpcontext(0x00000418)]
        HRESULT IsSameLibrary(
            [in] TypeLibInfo* CheckLib,
            [out, retval] VARIANT_BOOL* retVal);
        [id(0x60020019), restricted]
        HRESULT _OldResetSearchCriteria();
        [id(0x6002001a), restricted]
        HRESULT _OldGetTypesWithMember();
        [id(0x6002001b), restricted]
        HRESULT _OldGetMembersWithSubString();
        [id(0x6002001c), restricted]
        HRESULT _OldGetTypesWithSubString();
        [id(0x6002001d), restricted]
        HRESULT _OldCaseTypeName();
        [id(0x6002001e), restricted]
        HRESULT _OldCaseMemberName();
        [id(0x6002001f), restricted]
        HRESULT _OldFillTypesList();
        [id(0x60020020), restricted]
        HRESULT _OldFillTypesCombo();
        [id(0x60020021), restricted]
        HRESULT _OldFillMemberList();
        [id(0x60020022), restricted]
        HRESULT _OldAddClassTypeToList();
        [id(0x60020023), propput, helpstring("The string to put in the list for an application object entry"), helpcontext(0x0000041a)]
        HRESULT AppObjString([in] BSTR retVal);
        [id(0x60020024), propput, helpstring("The external library number.  Placed in ItemData when lists are filled."), helpcontext(0x0000040f)]
        HRESULT LibNum([in] short retVal);
        [id(0x60020025), propget, helpstring("Whether or not to display the library name."), helpcontext(0x0000040f)]
        HRESULT ShowLibName([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020025), propput, helpstring("Whether or not to display the library name."), helpcontext(0x0000040f)]
        HRESULT ShowLibName([in] VARIANT_BOOL retVal);
        [id(0x60020027), propputref, restricted]
        HRESULT _OldListBoxNotification([in] ListBoxNotification* rhs);
        [id(0x60020028), propget, helpstring("TypeKind of TypeInfo number"), helpcontext(0x00000417)]
        HRESULT GetTypeKind(
            [in] short TypeInfoNumber,
            [out, retval] TypeKinds* retVal);
        [id(0x60020029), propget, helpstring("SysKind of TypeLib"), helpcontext(0x00000410)]
        HRESULT SysKind([out, retval] SysKinds* retVal);
        [id(0x6002002a), propget, helpstring("Default search filter"), helpcontext(0x00000426)]
        HRESULT SearchDefault([out, retval] TliSearchTypes* retVal);
        [id(0x6002002a), propput, helpstring("Default search filter"), helpcontext(0x00000426)]
        HRESULT SearchDefault([in] TliSearchTypes retVal);
        [id(0x6002002c), helpstring("Try to case the name of a type which matches the search criteria.  Returns matching search flags."), helpcontext(0x0000041d)]
        HRESULT CaseTypeName(
            [in, out] BSTR* bstrName,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [out, retval] TliSearchTypes* retVal);
        [id(0x6002002d), helpstring("Check if this is a valid member name"), helpcontext(0x0000041d)]
        HRESULT CaseMemberName(
            [in, out] BSTR* bstrName,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [out, retval] VARIANT_BOOL* retVal);
        [id(0x6002002e), helpstring("Resets search criteria.  Only matching typeinfos will be searched."), helpcontext(0x0000040e)]
        HRESULT ResetSearchCriteria(
            [in, optional, defaultvalue(528)] TypeFlags TypeFilter,
            [in, optional, defaultvalue(0)] VARIANT_BOOL IncludeEmptyTypes,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore);
        [id(0x6002002f), helpstring("Get types with given member"), helpcontext(0x00000422)]
        HRESULT GetTypesWithMember(
            [in] BSTR MemberName,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x60020030), helpstring("Get types with given member.  Add directly to hWnd."), helpcontext(0x00000422)]
        HRESULT GetTypesWithMemberDirect(
            [in] BSTR MemberName,
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] short* retVal);
        [id(0x60020031), helpstring("Get matching member names"), helpcontext(0x0000041f)]
        HRESULT GetMembersWithSubString(
            [in] BSTR SubString,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL SearchMiddle,
            [in, out, optional, defaultvalue(0)] SearchHelper** Helper,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x60020032), helpstring("Get matching member names. Add directly to hWnd."), helpcontext(0x0000041f)]
        HRESULT GetMembersWithSubStringDirect(
            [in] BSTR SubString,
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL SearchMiddle,
            [in, out, optional, defaultvalue(0)] SearchHelper** Helper,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] short* retVal);
        [id(0x60020033), helpstring("Get matching type names."), helpcontext(0x00000424)]
        HRESULT GetTypesWithSubString(
            [in] BSTR SubString,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL SearchMiddle,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [out, retval] SearchResults** retVal);
        [id(0x60020034), helpstring("Get matching type names. Add directly to hWnd."), helpcontext(0x00000424)]
        HRESULT GetTypesWithSubStringDirect(
            [in] BSTR SubString,
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL SearchMiddle,
            [out, retval] short* retVal);
        [id(0x60020035), helpstring("Get types which match the give search criteria."), helpcontext(0x00000421)]
        HRESULT GetTypes(
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [out, retval] SearchResults** retVal);
        [id(0x60020036), helpstring("Get types which match the give search criteria.  Add directly to hWnd."), helpcontext(0x00000421)]
        HRESULT GetTypesDirect(
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [out, retval] short* retVal);
        [id(0x60020037), helpstring("Get members corresponding to SearchData"), helpcontext(0x0000041e)]
        HRESULT GetMembers(
            [in] long SearchData,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x60020038), helpstring("Get members corresponding to SearchData.  Add directly to hWnd."), helpcontext(0x0000041e)]
        HRESULT GetMembersDirect(
            [in] long SearchData,
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(0)] TliItemDataTypes ItemDataType,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] short* retVal);
        [id(0x60020039), helpstring("Set filters for member searches (GetMembersWithSubstring[Direct], GetMembers[Direct])"), helpcontext(0x00000427)]
        HRESULT SetMemberFilters(
            [in, optional, defaultvalue(65)] FuncFlags FuncFilter,
            [in, optional, defaultvalue(192)] VarFlags VarFilter);
        [id(0x6002003a), helpstring("Generate SearchData for use with GetMembers[Direct]"), helpcontext(0x00000425)]
        HRESULT MakeSearchData(
            [in] BSTR TypeInfoName,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [out, retval] long* retVal);
        [id(0x6002003b), propget, helpstring("The TypeInfos for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT TypeInfos([out, retval] TypeInfos** retVal);
        [id(0x6002003c), propget, helpstring("The records for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT Records([out, retval] Records** retVal);
        [id(0x6002003d), propget, helpstring("The intrinsic aliases for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT IntrinsicAliases([out, retval] IntrinsicAliases** retVal);
        [id(0x6002003e), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x6002003f), helpstring("Create MemberInfo object from type and member searches."), helpcontext(0x00000419)]
        HRESULT GetMemberInfo(
            [in] long SearchData,
            [in, optional, defaultvalue(0)] InvokeKinds InvokeKinds,
            [in, optional, defaultvalue(-1)] long MemberId,
            [in, optional, defaultvalue("")] BSTR MemberName,
            [out, retval] MemberInfo** retVal);
        [id(0x60020040), propget, helpstring("The unions for the current TypeLib"), helpcontext(0x000003ea)]
        HRESULT Unions([out, retval] Unions** retVal);
        [id(0x60020041), helpstring("Add types to a GetTypes* SearchResults object"), helpcontext(0x0000041b)]
        HRESULT AddTypes(
            [in] SAFEARRAY(short)* TypeInfoNumbers,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [out, retval] SearchResults** retVal);
        [id(0x60020042), helpstring("Add types to a GetTypes* SearchResults object.  Add directly to hWnd."), helpcontext(0x0000041b)]
        HRESULT AddTypesDirect(
            [in] SAFEARRAY(short)* TypeInfoNumbers,
            [in] int hWnd,
            [in, optional, defaultvalue(0)] TliWindowTypes WindowType,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [out, retval] short* retVal);
        [id(0x60020043), helpstring("Free cached search information.  (8 * TypeInfoCount bytes)"), helpcontext(0x0000040e)]
        HRESULT FreeSearchCriteria();
        [id(0x60020044), helpstring("Register the typelib"), helpcontext(0x0000040d)]
        HRESULT Register([in, optional, defaultvalue("")] BSTR HelpDir);
        [id(0x60020045), helpstring("UnRegister the typelib"), helpcontext(0x0000040d)]
        HRESULT UnRegister();
        [id(0x60020046), propget, helpstring("Helpstring for the library"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020023), propget, helpstring("The string to put in the list for an application object entry"), helpcontext(0x0000041a)]
        HRESULT AppObjString([out, retval] BSTR* retVal);
        [id(0x60020024), propget, helpstring("The external library number.  Placed in ItemData when lists are filled."), helpcontext(0x0000040f)]
        HRESULT LibNum([out, retval] short* retVal);
        [id(0x60020049), helpstring("Get matching member names grouped by InvokeKind."), helpcontext(0x00000420)]
        HRESULT GetMembersWithSubStringEx(
            [in] BSTR SubString,
            [in] SAFEARRAY(InvokeKinds)* InvokeGroupings,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL SearchMiddle,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x6002004a), helpstring("Get types with member, verify InvokeKinds"), helpcontext(0x00000423)]
        HRESULT GetTypesWithMemberEx(
            [in] BSTR MemberName,
            [in] InvokeKinds InvokeKind,
            [in, out, optional, defaultvalue(0)] SearchResults** StartResults,
            [in, optional, defaultvalue(4096)] TliSearchTypes SearchType,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Sort,
            [in, optional, defaultvalue(0)] VARIANT_BOOL ShowUnderscore,
            [out, retval] SearchResults** retVal);
        [id(0x6002004b), propget, hidden, helpstring("Internal ITypeLib interface pointer"), helpcontext(0x00000405)]
        HRESULT ITypeLib([out, retval] IUnknown** retVal);
        [id(0x6002004b), propputref, hidden, helpstring("Internal ITypeLib interface pointer"), helpcontext(0x00000405)]
        HRESULT ITypeLib([in] IUnknown* retVal);
        [id(0x6002004d), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002004e), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
        [id(0x6002004f), propget, helpstring("Find a corresponding visible type"), helpcontext(0x0000041c)]
        HRESULT BestEquivalentType(
            [in] BSTR TypeInfoName,
            [out, retval] BSTR* retVal);
    };

    [
        uuid(8B217746-717D-11CE-AB5B-D41203C10000),
        helpstring("TypeLib information"),
        helpcontext(0x000003f2)
    ]
    coclass TypeLibInfo {
        [default] interface _TypeLibInfo;
    };

    [
        odl,
        uuid(8B217756-717D-11CE-AB5B-D41203C10000),
        helpstring("Item in SearchResults collection"),
        helpcontext(0x0000043e),
        dual,
        nonextensible,
        oleautomation
    ]
    interface SearchItem : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] SearchItem** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Text of search"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Packed search data"), helpcontext(0x00000425)]
        HRESULT SearchData([out, retval] long* retVal);
        [id(0x60020004), propget, helpstring("TypeInfo number (LOWORD of SearchData)"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x60020005), propget, restricted]
        HRESULT _OldLibNum([out, retval] unsigned char* retVal);
        [id(0x60020006), propget, helpstring("SearchType data (HIBYTE of HIWORD of SearchData)"), helpcontext(0x00000426)]
        HRESULT SearchType([out, retval] TliSearchTypes* retVal);
        [id(0x60020007), propget, helpstring("MemberID (DispId) for GetFilteredMembers search"), helpcontext(0x00000430)]
        HRESULT MemberId([out, retval] long* retVal);
        [id(0x60020008), propget, helpstring("InvokeKinds (method,property let/get/set,event) for current search item"), helpcontext(0x0000042f)]
        HRESULT InvokeKinds([out, retval] InvokeKinds* retVal);
        [id(0x60020009), propget, hidden, helpstring("Direct pointer to internal BSTR"), helpcontext(0x0000043f)]
        HRESULT NamePtrW([out, retval] long* retVal);
        [id(0x6002000a), propget, helpstring("Library number (LOBYTE of HIWORD of SearchData)"), helpcontext(0x0000040f)]
        HRESULT LibNum([out, retval] short* retVal);
        [id(0x6002000b), propget, helpstring("Is member constant?"), helpcontext(0x0000042c)]
        HRESULT Constant([out, retval] VARIANT_BOOL* retVal);
        [id(0x6002000c), propget, helpstring("Is item hidden?"), helpcontext(0x0000042d)]
        HRESULT Hidden([out, retval] VARIANT_BOOL* retVal);
        [id(0x6002000d), propget, helpstring("Group number of GetMembersWithSubStringEx InvokeGroupings array."), helpcontext(0x0000042e)]
        HRESULT InvokeGroup([out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217757-717D-11CE-AB5B-D41203C10000),
        helpstring("SearchResults collection"),
        helpcontext(0x00000445),
        dual,
        nonextensible,
        oleautomation
    ]
    interface SearchResults : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] SearchResults** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0xfffffffc)]
        HRESULT _NewEnum([out, retval] IUnknown** retVal);
        [id(0x60020003), propget, restricted]
        HRESULT _OldItem(
            [in] short Index,
            [out, retval] SearchItem** retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldCount([out, retval] short* retVal);
        [id(0x60020005), propget, helpstring("Are the results currently sorted"), helpcontext(0x00000441)]
        HRESULT Sorted([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020006), helpstring("Sort the SearchResults collection"), helpcontext(0x00000440)]
        HRESULT Sort([in, optional, defaultvalue(0)] CustomSort* CustomSort);
        [id(0x60020007), helpstring("Modify this collection"), helpcontext(0x00000412)]
        HRESULT Filter(
            [in] CustomFilter* CustomFilter,
            [in, out, optional, defaultvalue(0)] SearchResults** AppendExtractedTo,
            [in, optional, defaultvalue(0)] SearchItem* StartAfter,
            [out, retval] SearchResults** retVal);
        [id(00000000), propget, helpstring("SearchItem object"), helpcontext(0x0000043e)]
        HRESULT Item(
            [in] long Index,
            [out, retval] SearchItem** retVal);
        [id(0x60020009), propget, helpstring("Number of items in collection"), helpcontext(0x00000428)]
        HRESULT Count([out, retval] long* retVal);
        [id(0x6002000a), hidden, helpstring("Locate an item in a sorted collection."), helpcontext(0x00000442)]
        HRESULT LocateSorted(
            [in] CustomSort* CustomSort,
            [out, retval] long* retVal);
        [id(0x6002000b), helpstring("Locate an item in any collection. Item2 of CustomSort.Compare is always Nothing.  SearchString required for an unsorted collection."), helpcontext(0x00000442)]
        HRESULT Locate(
            [in, optional, defaultvalue("")] BSTR SearchString,
            [in, optional, defaultvalue(0)] CustomSort* CustomSort,
            [in, optional, defaultvalue(0)] long StartAfter,
            [out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B217758-717D-11CE-AB5B-D41203C10000),
        helpstring("ListBoxNotification interface, use with Implements and Direct methods"),
        helpcontext(0x00000411),
        dual,
        nonextensible,
        oleautomation
    ]
    interface ListBoxNotification : IDispatch {
        [id(0x60020000), helpstring("Notification fired during Get*Direct methods"), helpcontext(0x00000411)]
        HRESULT OnAddString(
            [in] long lpstr,
            [in] VARIANT_BOOL fUnicode);
    };

    [
        odl,
        uuid(8B21775F-717D-11CE-AB5B-D41203C10000),
        helpstring("Interface for custom sorting of a SearchResults collection, use with Implements"),
        helpcontext(0x00000440),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CustomSort : IDispatch {
        [id(0x60020000), helpstring("Entry for SearchResults.Sort and SearchResults.Locate"), helpcontext(0x00000440)]
        HRESULT Compare(
            [in] SearchItem* Item1,
            [in] SearchItem* Item2,
            [in, out] long* Compare);
    };

    typedef [helpstring("Actions for CustomFilter.Visit"), helpcontext(0x00000412)]
    enum {
        tliCfaLeave = 0,
        tliCfaDuplicate = 1,
        tliCfaExtract = 2,
        tliCfaDelete = 3
    } TliCustomFilterAction;

    [
        odl,
        uuid(8B217760-717D-11CE-AB5B-D41203C10000),
        helpstring("Interface for modifying or splitting a SearchResults collection, use with Implements"),
        helpcontext(0x00000412),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CustomFilter : IDispatch {
        [id(0x60020000), helpstring("Entry for SearchResults.Filter"), helpcontext(0x00000412)]
        HRESULT Visit(
            [in] SearchItem* Item,
            [in, out] TliCustomFilterAction* Action);
    };

    [
        odl,
        uuid(8B21775D-717D-11CE-AB5B-D41203C10000),
        helpstring("TLIApplication object"),
        helpcontext(0x000003f1),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface _TLIApplication : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] TLIApplication** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0x60020002), helpstring("Create a TypeLibInfo object from a file"), helpcontext(0x00000406)]
        HRESULT TypeLibInfoFromFile(
            [in] BSTR FileName,
            [out, retval] TypeLibInfo** retVal);
        [id(0x60020003), helpstring("Create an InterfaceInfo object from a running IDispatch object"), helpcontext(0x0000040b)]
        HRESULT InterfaceInfoFromObject(
            [in] IDispatch* Object,
            [out, retval] InterfaceInfo** retVal);
        [id(0x60020004), propget, helpstring("Notification object for all Get*Direct methods.  Use with Implements."), helpcontext(0x00000411)]
        HRESULT ListBoxNotification([out, retval] ListBoxNotification** retVal);
        [id(0x60020004), propputref, helpstring("Notification object for all Get*Direct methods.  Use with Implements."), helpcontext(0x00000411)]
        HRESULT ListBoxNotification([in] ListBoxNotification* retVal);
        [id(0x60020006), propget, helpstring("Automatically resolve all aliased parameters and return types.  Defaults to True."), helpcontext(0x00000409)]
        HRESULT ResolveAliases([out, retval] VARIANT_BOOL* retVal);
        [id(0x60020006), propput, helpstring("Automatically resolve all aliased parameters and return types.  Defaults to True."), helpcontext(0x00000409)]
        HRESULT ResolveAliases([in] VARIANT_BOOL retVal);
        [id(0x60020008), vararg, helpstring("Hook to IDispatch::Invoke.  ID is Name or MemberID (DispId).  List arguments backwards.  Supports ByRef."), helpcontext(0x00000408)]
        HRESULT InvokeHook(
            [in] IDispatch* Object,
            [in] VARIANT NameOrID,
            [in] InvokeKinds InvokeKind,
            [in] SAFEARRAY(VARIANT)* ReverseArgList,
            [out, retval] VARIANT* retVal);
        [id(0x60020009), helpstring("Hook to IDispatch::Invoke.  ID is Name or MemberID.  Arguments in ReverseArgList must be listed backwards.  ByRef args not supported."), helpcontext(0x00000408)]
        HRESULT InvokeHookArray(
            [in] IDispatch* Object,
            [in] VARIANT NameOrID,
            [in] InvokeKinds InvokeKind,
            [in] SAFEARRAY(VARIANT)* ReverseArgList,
            [out, retval] VARIANT* retVal);
        [id(0x6002000a), vararg, helpstring("InvokeHook call with no return value."), helpcontext(0x00000408)]
        HRESULT InvokeHookSub(
            [in] IDispatch* Object,
            [in] VARIANT NameOrID,
            [in] InvokeKinds InvokeKind,
            [in] SAFEARRAY(VARIANT)* ReverseArgList);
        [id(0x6002000b), helpstring("InvokeHookArray call with no return value."), helpcontext(0x00000408)]
        HRESULT InvokeHookArraySub(
            [in] IDispatch* Object,
            [in] VARIANT NameOrID,
            [in] InvokeKinds InvokeKind,
            [in] SAFEARRAY(VARIANT)* ReverseArgList);
        [id(0x6002000c), helpstring("Create a TypeInfo object from any running COM object"), helpcontext(0x0000040b)]
        HRESULT ClassInfoFromObject(
            [in] IUnknown* Object,
            [out, retval] TypeInfo** retVal);
        [id(0x6002000d), helpstring("Hook to IDispatch::GetIDsOfNames.  Retrieve MemberID (DispId) once to speed up multiple InvokeHook calls."), helpcontext(0x00000408)]
        HRESULT InvokeID(
            [in] IDispatch* Object,
            [in] BSTR Name,
            [out, retval] long* retVal);
        [id(0x6002000e), propget, helpstring("Language Identifier to use in InvokeHook calls."), helpcontext(0x00000408)]
        HRESULT InvokeLCID([out, retval] long* retVal);
        [id(0x6002000e), propput, helpstring("Language Identifier to use in InvokeHook calls."), helpcontext(0x00000408)]
        HRESULT InvokeLCID([in] long retVal);
        [id(0x60020010), hidden, helpstring("Create a TypeInfo object from an ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT TypeInfoFromITypeInfo(
            [in] IUnknown* ptinfo,
            [out, retval] TypeInfo** retVal);
        [id(0x60020011), hidden, helpstring("Create a TypeLibInfo object from an ITypeLib interface"), helpcontext(0x00000405)]
        HRESULT TypeLibInfoFromITypeLib(
            [in] IUnknown* pITypeLib,
            [out, retval] TypeLibInfo** retVal);
        [id(0x60020012), helpstring("Create a TypeLibInfo object from a file"), helpcontext(0x00000407)]
        HRESULT TypeLibInfoFromRegistry(
            [in] BSTR TypeLibGuid,
            [in] short MajorVersion,
            [in] short MinorVersion,
            [in] long LCID,
            [out, retval] TypeLibInfo** retVal);
        [id(0x60020013), helpstring("Create a TypeInfo object from a VT_RECORD Variant"), helpcontext(0x0000040a)]
        HRESULT TypeInfoFromRecordVariant(
            [in] VARIANT* RecordVariant,
            [out, retval] TypeInfo** retVal);
        [id(0x60020014), propget, helpstring("Read and write fields of a VT_RECORD Variant"), helpcontext(0x0000040a)]
        HRESULT RecordField(
            [in, out] VARIANT* RecordVariant,
            [in] BSTR* FieldName,
            [out, retval] VARIANT* retVal);
        [id(0x60020014), propput, helpstring("Read and write fields of a VT_RECORD Variant"), helpcontext(0x0000040a)]
        HRESULT RecordField(
            [in, out] VARIANT* RecordVariant,
            [in] BSTR* FieldName,
            [in] VARIANT* retVal);
        [id(0x60020014), propputref, helpstring("Read and write fields of a VT_RECORD Variant"), helpcontext(0x0000040a)]
        HRESULT RecordField(
            [in, out] VARIANT* RecordVariant,
            [in] BSTR* FieldName,
            [in] VARIANT* retVal);
    };

    [
        uuid(8B21775E-717D-11CE-AB5B-D41203C10000),
        helpstring("TLIApplication object"),
        helpcontext(0x000003f1),
        appobject,
        predeclid
    ]
    coclass TLIApplication {
        [default] interface _TLIApplication;
    };

    [
        odl,
        uuid(8B21775A-717D-11CE-AB5B-D41203C10000),
        helpstring("TypeInfos Collection"),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface TypeInfos : _BaseTypeInfos {
        [id(00000000), propget, helpstring("TypeInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] TypeInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] TypeInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] TypeInfo** retVal);
    };

    [
        odl,
        uuid(8B21775B-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface RecordInfo : ConstantInfo {
    };

    [
        odl,
        uuid(8B21775C-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Records : _BaseTypeInfos {
        [id(00000000), propget, helpstring("RecordInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] RecordInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] RecordInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] RecordInfo** retVal);
    };

    [
        odl,
        uuid(8B217761-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface IntrinsicAliasInfo : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] IntrinsicAliasInfo** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(00000000), propget, helpstring("Name of the object"), helpcontext(0x000003f8)]
        HRESULT Name([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Registry format of TypeInfo GUID"), helpcontext(0x000003f6)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020004), propget, restricted]
        HRESULT _OldHelpString();
        [id(0x60020005), propget, helpstring("HelpContext for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpContext([out, retval] long* retVal);
        [id(0x60020006), propget, helpstring("HelpFile for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpFile([out, retval] BSTR* retVal);
        [id(0x60020007), propget, helpstring("Type attribute mask for the TypeInfo"), helpcontext(0x000003f4)]
        HRESULT AttributeMask([out, retval] short* retVal);
        [id(0x60020008), propget, helpstring("Type attributes for the TypeInfo"), helpcontext(0x000003f5)]
        HRESULT AttributeStrings(
            [out] SAFEARRAY(BSTR)* AttributeArray,
            [out, retval] short* retVal);
        [id(0x60020009), propget, restricted]
        HRESULT _OldTypeKind();
        [id(0x6002000a), propget, helpstring("TypeKind of the TypeInfo, string"), helpcontext(0x000003fa)]
        HRESULT TypeKindString([out, retval] BSTR* retVal);
        [id(0x6002000b), propget, helpstring("Actual Index of TypeInfo in TypeLib"), helpcontext(0x000003f9)]
        HRESULT TypeInfoNumber([out, retval] short* retVal);
        [id(0x6002000c), restricted, hidden]
        HRESULT _placeholder_VTableInterface();
        [id(0x6002000d), restricted, hidden]
        HRESULT _placeholder_GetMember();
        [id(0x6002000e), restricted, hidden]
        HRESULT _placeholder_Members();
        [id(0x6002000f), propget, helpstring("Containing TypeLibInfo object"), helpcontext(0x000003fc)]
        HRESULT Parent([out, retval] TypeLibInfo** retVal);
        [id(0x60020010), restricted, hidden]
        HRESULT _ImpliedInterfaces();
        [id(0x60020011), restricted, hidden]
        HRESULT _DefaultInterface();
        [id(0x60020012), restricted, hidden]
        HRESULT _DefaultEventInterface();
        [id(0x60020013), propget, helpstring("TypeKind of the TypeInfo, numeric value"), helpcontext(0x000003fa)]
        HRESULT TypeKind([out, retval] TypeKinds* retVal);
        [id(0x60020014), propget, helpstring("Base type.  Valid only if TypeKind is TKIND_ALIAS."), helpcontext(0x00000403)]
        HRESULT ResolvedType([out, retval] VarTypeInfo** retVal);
        [id(0x60020015), propget, helpstring("Custom data GUIDs and Values"), helpcontext(0x000003eb)]
        HRESULT CustomDataCollection([out, retval] CustomDataCollection** retVal);
        [id(0x60020016), propget, helpstring("Helpstring for the TypeInfo"), helpcontext(0x000003f7)]
        HRESULT HelpString(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x60020017), propget, hidden, helpstring("Internal ITypeInfo pointer"), helpcontext(0x00000400)]
        HRESULT ITypeInfo([out, retval] IUnknown** retVal);
        [id(0x60020018), propget, helpstring("Major Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MajorVersion([out, retval] short* retVal);
        [id(0x60020019), propget, helpstring("Minor Version of TypeInfo"), helpcontext(0x000003fb)]
        HRESULT MinorVersion([out, retval] short* retVal);
        [id(0x6002001a), propget, helpstring("Dll with DLLGetDocumentation entry point"), helpcontext(0x000003f7)]
        HRESULT HelpStringDll(
            [in, optional, defaultvalue(0)] long LCID,
            [out, retval] BSTR* retVal);
        [id(0x6002001b), propget, helpstring("Context ID for use with DLLGetDocumentation"), helpcontext(0x000003f7)]
        HRESULT HelpStringContext([out, retval] long* retVal);
    };

    [
        odl,
        uuid(8B217762-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface IntrinsicAliases : _BaseTypeInfos {
        [id(00000000), propget, helpstring("IntrinsicAliasInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] IntrinsicAliasInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] IntrinsicAliasInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] IntrinsicAliasInfo** retVal);
    };

    [
        odl,
        uuid(8B217763-717D-11CE-AB5B-D41203C10000),
        helpstring("CustomData Object"),
        helpcontext(0x000003eb),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CustomData : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] CustomData** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0x60020002), propget, helpstring("Guid for custom data item"), helpcontext(0x000003eb)]
        HRESULT GUID([out, retval] BSTR* retVal);
        [id(0x60020003), propget, helpstring("Variant value of custom data item"), helpcontext(0x000003eb)]
        HRESULT Value([out, retval] VARIANT* retVal);
    };

    [
        odl,
        uuid(8B217764-717D-11CE-AB5B-D41203C10000),
        helpstring("CustomData Collection"),
        helpcontext(0x000003eb),
        dual,
        nonextensible,
        oleautomation
    ]
    interface CustomDataCollection : IDispatch {
        [id(0x60020000), hidden, helpstring("Reference to this object.  Use in With statement."), helpcontext(0x000003fe)]
        HRESULT Me([out, retval] CustomDataCollection** retVal);
        [id(0x60020001), restricted, hidden]
        HRESULT _placeholder_destructor();
        [id(0xfffffffc)]
        HRESULT _NewEnum([out, retval] IUnknown** retVal);
        [id(00000000), propget, helpstring("CustomData object"), helpcontext(0x000003eb)]
        HRESULT Item(
            [in] short Index,
            [out, retval] CustomData** retVal);
        [id(0x60020004), propget, helpstring("Number of custom data entries"), helpcontext(0x000003eb)]
        HRESULT Count([out, retval] short* retVal);
    };

    [
        odl,
        uuid(8B217765-717D-11CE-AB5B-D41203C10000),
        helpstring("Members are a subset of TypeInfo object members."),
        helpcontext(0x000003e9),
        dual,
        nonextensible,
        oleautomation
    ]
    interface UnionInfo : ConstantInfo {
    };

    [
        odl,
        uuid(8B217766-717D-11CE-AB5B-D41203C10000),
        helpstring("Subset of TypeInfos collection."),
        helpcontext(0x000003ea),
        dual,
        nonextensible,
        oleautomation
    ]
    interface Unions : _BaseTypeInfos {
        [id(00000000), propget, helpstring("UnionInfo object"), helpcontext(0x000003f0)]
        HRESULT Item(
            [in] short Index,
            [out, retval] UnionInfo** retVal);
        [id(0x60030001), propget, helpstring("Fetch by TypeInfo number"), helpcontext(0x000003f0)]
        HRESULT IndexedItem(
            [in] short TypeInfoNumber,
            [out, retval] UnionInfo** retVal);
        [id(0x60030002), propget, helpstring("Fetch by name"), helpcontext(0x000003f0)]
        HRESULT NamedItem(
            [in, out] BSTR* TypeInfoName,
            [out, retval] UnionInfo** retVal);
    };

    typedef [helpstring("OLE Automation CALLCONV values"), helpcontext(0x00000431)]
    enum {
        CC_FASTCALL = 0,
        CC_CDECL = 1,
        CC_MSCPASCAL = 2,
        CC_PASCAL = 2,
        CC_MACPASCAL = 3,
        CC_STDCALL = 4,
        CC_FPFASTCALL = 5,
        CC_SYSCALL = 6,
        CC_MPWCDECL = 7,
        CC_MPWPASCAL = 8,
        CC_MAX = 9
    } CallConvs;

};