// from msvc 14.44.35208

/* this ALWAYS GENERATED file contains the definitions for the interfaces */

/* File created by MIDL compiler version 8.01.0628 */
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning(disable : 4049) /* more than 64k source lines */

/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error "this stub requires an updated version of <rpcndr.h>"
#endif /* __RPCNDR_H_VERSION__ */

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __dia2_h__
#define __dia2_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */

#ifndef __IDiaLoadCallback_FWD_DEFINED__
#define __IDiaLoadCallback_FWD_DEFINED__
typedef interface IDiaLoadCallback IDiaLoadCallback;

#endif /* __IDiaLoadCallback_FWD_DEFINED__ */

#ifndef __IDiaLoadCallback2_FWD_DEFINED__
#define __IDiaLoadCallback2_FWD_DEFINED__
typedef interface IDiaLoadCallback2 IDiaLoadCallback2;

#endif /* __IDiaLoadCallback2_FWD_DEFINED__ */

#ifndef __IDiaReadExeAtOffsetCallback_FWD_DEFINED__
#define __IDiaReadExeAtOffsetCallback_FWD_DEFINED__
typedef interface IDiaReadExeAtOffsetCallback IDiaReadExeAtOffsetCallback;

#endif /* __IDiaReadExeAtOffsetCallback_FWD_DEFINED__ */

#ifndef __IDiaReadExeAtRVACallback_FWD_DEFINED__
#define __IDiaReadExeAtRVACallback_FWD_DEFINED__
typedef interface IDiaReadExeAtRVACallback IDiaReadExeAtRVACallback;

#endif /* __IDiaReadExeAtRVACallback_FWD_DEFINED__ */

#ifndef __IDiaDataSource_FWD_DEFINED__
#define __IDiaDataSource_FWD_DEFINED__
typedef interface IDiaDataSource IDiaDataSource;

#endif /* __IDiaDataSource_FWD_DEFINED__ */

#ifndef __IDiaDataSourceEx_FWD_DEFINED__
#define __IDiaDataSourceEx_FWD_DEFINED__
typedef interface IDiaDataSourceEx IDiaDataSourceEx;

#endif /* __IDiaDataSourceEx_FWD_DEFINED__ */

#ifndef __IDiaDataSourceEx2_FWD_DEFINED__
#define __IDiaDataSourceEx2_FWD_DEFINED__
typedef interface IDiaDataSourceEx2 IDiaDataSourceEx2;

#endif /* __IDiaDataSourceEx2_FWD_DEFINED__ */

#ifndef __IDiaEnumSymbols_FWD_DEFINED__
#define __IDiaEnumSymbols_FWD_DEFINED__
typedef interface IDiaEnumSymbols IDiaEnumSymbols;

#endif /* __IDiaEnumSymbols_FWD_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr_FWD_DEFINED__
#define __IDiaEnumSymbolsByAddr_FWD_DEFINED__
typedef interface IDiaEnumSymbolsByAddr IDiaEnumSymbolsByAddr;

#endif /* __IDiaEnumSymbolsByAddr_FWD_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr2_FWD_DEFINED__
#define __IDiaEnumSymbolsByAddr2_FWD_DEFINED__
typedef interface IDiaEnumSymbolsByAddr2 IDiaEnumSymbolsByAddr2;

#endif /* __IDiaEnumSymbolsByAddr2_FWD_DEFINED__ */

#ifndef __IDiaEnumSourceFiles_FWD_DEFINED__
#define __IDiaEnumSourceFiles_FWD_DEFINED__
typedef interface IDiaEnumSourceFiles IDiaEnumSourceFiles;

#endif /* __IDiaEnumSourceFiles_FWD_DEFINED__ */

#ifndef __IDiaEnumInputAssemblyFiles_FWD_DEFINED__
#define __IDiaEnumInputAssemblyFiles_FWD_DEFINED__
typedef interface IDiaEnumInputAssemblyFiles IDiaEnumInputAssemblyFiles;

#endif /* __IDiaEnumInputAssemblyFiles_FWD_DEFINED__ */

#ifndef __IDiaEnumLineNumbers_FWD_DEFINED__
#define __IDiaEnumLineNumbers_FWD_DEFINED__
typedef interface IDiaEnumLineNumbers IDiaEnumLineNumbers;

#endif /* __IDiaEnumLineNumbers_FWD_DEFINED__ */

#ifndef __IDiaEnumInjectedSources_FWD_DEFINED__
#define __IDiaEnumInjectedSources_FWD_DEFINED__
typedef interface IDiaEnumInjectedSources IDiaEnumInjectedSources;

#endif /* __IDiaEnumInjectedSources_FWD_DEFINED__ */

#ifndef __IDiaEnumSegments_FWD_DEFINED__
#define __IDiaEnumSegments_FWD_DEFINED__
typedef interface IDiaEnumSegments IDiaEnumSegments;

#endif /* __IDiaEnumSegments_FWD_DEFINED__ */

#ifndef __IDiaEnumSectionContribs_FWD_DEFINED__
#define __IDiaEnumSectionContribs_FWD_DEFINED__
typedef interface IDiaEnumSectionContribs IDiaEnumSectionContribs;

#endif /* __IDiaEnumSectionContribs_FWD_DEFINED__ */

#ifndef __IDiaEnumFrameData_FWD_DEFINED__
#define __IDiaEnumFrameData_FWD_DEFINED__
typedef interface IDiaEnumFrameData IDiaEnumFrameData;

#endif /* __IDiaEnumFrameData_FWD_DEFINED__ */

#ifndef __IDiaEnumDebugStreamData_FWD_DEFINED__
#define __IDiaEnumDebugStreamData_FWD_DEFINED__
typedef interface IDiaEnumDebugStreamData IDiaEnumDebugStreamData;

#endif /* __IDiaEnumDebugStreamData_FWD_DEFINED__ */

#ifndef __IDiaEnumDebugStreams_FWD_DEFINED__
#define __IDiaEnumDebugStreams_FWD_DEFINED__
typedef interface IDiaEnumDebugStreams IDiaEnumDebugStreams;

#endif /* __IDiaEnumDebugStreams_FWD_DEFINED__ */

#ifndef __IDiaAddressMap_FWD_DEFINED__
#define __IDiaAddressMap_FWD_DEFINED__
typedef interface IDiaAddressMap IDiaAddressMap;

#endif /* __IDiaAddressMap_FWD_DEFINED__ */

#ifndef __IDiaSession_FWD_DEFINED__
#define __IDiaSession_FWD_DEFINED__
typedef interface IDiaSession IDiaSession;

#endif /* __IDiaSession_FWD_DEFINED__ */

#ifndef __IDiaSessionEx_FWD_DEFINED__
#define __IDiaSessionEx_FWD_DEFINED__
typedef interface IDiaSessionEx IDiaSessionEx;

#endif /* __IDiaSessionEx_FWD_DEFINED__ */

#ifndef __IDiaSymbol_FWD_DEFINED__
#define __IDiaSymbol_FWD_DEFINED__
typedef interface IDiaSymbol IDiaSymbol;

#endif /* __IDiaSymbol_FWD_DEFINED__ */

#ifndef __IDiaSymbol2_FWD_DEFINED__
#define __IDiaSymbol2_FWD_DEFINED__
typedef interface IDiaSymbol2 IDiaSymbol2;

#endif /* __IDiaSymbol2_FWD_DEFINED__ */

#ifndef __IDiaSymbol3_FWD_DEFINED__
#define __IDiaSymbol3_FWD_DEFINED__
typedef interface IDiaSymbol3 IDiaSymbol3;

#endif /* __IDiaSymbol3_FWD_DEFINED__ */

#ifndef __IDiaSymbol4_FWD_DEFINED__
#define __IDiaSymbol4_FWD_DEFINED__
typedef interface IDiaSymbol4 IDiaSymbol4;

#endif /* __IDiaSymbol4_FWD_DEFINED__ */

#ifndef __IDiaSymbol5_FWD_DEFINED__
#define __IDiaSymbol5_FWD_DEFINED__
typedef interface IDiaSymbol5 IDiaSymbol5;

#endif /* __IDiaSymbol5_FWD_DEFINED__ */

#ifndef __IDiaSymbol6_FWD_DEFINED__
#define __IDiaSymbol6_FWD_DEFINED__
typedef interface IDiaSymbol6 IDiaSymbol6;

#endif /* __IDiaSymbol6_FWD_DEFINED__ */

#ifndef __IDiaSymbol7_FWD_DEFINED__
#define __IDiaSymbol7_FWD_DEFINED__
typedef interface IDiaSymbol7 IDiaSymbol7;

#endif /* __IDiaSymbol7_FWD_DEFINED__ */

#ifndef __IDiaSymbol8_FWD_DEFINED__
#define __IDiaSymbol8_FWD_DEFINED__
typedef interface IDiaSymbol8 IDiaSymbol8;

#endif /* __IDiaSymbol8_FWD_DEFINED__ */

#ifndef __IDiaSymbol9_FWD_DEFINED__
#define __IDiaSymbol9_FWD_DEFINED__
typedef interface IDiaSymbol9 IDiaSymbol9;

#endif /* __IDiaSymbol9_FWD_DEFINED__ */

#ifndef __IDiaSymbol10_FWD_DEFINED__
#define __IDiaSymbol10_FWD_DEFINED__
typedef interface IDiaSymbol10 IDiaSymbol10;

#endif /* __IDiaSymbol10_FWD_DEFINED__ */

#ifndef __IDiaSymbol11_FWD_DEFINED__
#define __IDiaSymbol11_FWD_DEFINED__
typedef interface IDiaSymbol11 IDiaSymbol11;

#endif /* __IDiaSymbol11_FWD_DEFINED__ */

#ifndef __IDiaSourceFile_FWD_DEFINED__
#define __IDiaSourceFile_FWD_DEFINED__
typedef interface IDiaSourceFile IDiaSourceFile;

#endif /* __IDiaSourceFile_FWD_DEFINED__ */

#ifndef __IDiaInputAssemblyFile_FWD_DEFINED__
#define __IDiaInputAssemblyFile_FWD_DEFINED__
typedef interface IDiaInputAssemblyFile IDiaInputAssemblyFile;

#endif /* __IDiaInputAssemblyFile_FWD_DEFINED__ */

#ifndef __IDiaLineNumber_FWD_DEFINED__
#define __IDiaLineNumber_FWD_DEFINED__
typedef interface IDiaLineNumber IDiaLineNumber;

#endif /* __IDiaLineNumber_FWD_DEFINED__ */

#ifndef __IDiaSectionContrib_FWD_DEFINED__
#define __IDiaSectionContrib_FWD_DEFINED__
typedef interface IDiaSectionContrib IDiaSectionContrib;

#endif /* __IDiaSectionContrib_FWD_DEFINED__ */

#ifndef __IDiaSegment_FWD_DEFINED__
#define __IDiaSegment_FWD_DEFINED__
typedef interface IDiaSegment IDiaSegment;

#endif /* __IDiaSegment_FWD_DEFINED__ */

#ifndef __IDiaInjectedSource_FWD_DEFINED__
#define __IDiaInjectedSource_FWD_DEFINED__
typedef interface IDiaInjectedSource IDiaInjectedSource;

#endif /* __IDiaInjectedSource_FWD_DEFINED__ */

#ifndef __IDiaStackWalkFrame_FWD_DEFINED__
#define __IDiaStackWalkFrame_FWD_DEFINED__
typedef interface IDiaStackWalkFrame IDiaStackWalkFrame;

#endif /* __IDiaStackWalkFrame_FWD_DEFINED__ */

#ifndef __IDiaFrameData_FWD_DEFINED__
#define __IDiaFrameData_FWD_DEFINED__
typedef interface IDiaFrameData IDiaFrameData;

#endif /* __IDiaFrameData_FWD_DEFINED__ */

#ifndef __IDiaImageData_FWD_DEFINED__
#define __IDiaImageData_FWD_DEFINED__
typedef interface IDiaImageData IDiaImageData;

#endif /* __IDiaImageData_FWD_DEFINED__ */

#ifndef __IDiaTable_FWD_DEFINED__
#define __IDiaTable_FWD_DEFINED__
typedef interface IDiaTable IDiaTable;

#endif /* __IDiaTable_FWD_DEFINED__ */

#ifndef __IDiaEnumTables_FWD_DEFINED__
#define __IDiaEnumTables_FWD_DEFINED__
typedef interface IDiaEnumTables IDiaEnumTables;

#endif /* __IDiaEnumTables_FWD_DEFINED__ */

#ifndef __IDiaEnumSourceLink_FWD_DEFINED__
#define __IDiaEnumSourceLink_FWD_DEFINED__
typedef interface IDiaEnumSourceLink IDiaEnumSourceLink;

#endif /* __IDiaEnumSourceLink_FWD_DEFINED__ */

#ifndef __IDiaEnumSourceLink2_FWD_DEFINED__
#define __IDiaEnumSourceLink2_FWD_DEFINED__
typedef interface IDiaEnumSourceLink2 IDiaEnumSourceLink2;

#endif /* __IDiaEnumSourceLink2_FWD_DEFINED__ */

#ifndef __DiaSource_FWD_DEFINED__
#define __DiaSource_FWD_DEFINED__

#ifdef __cplusplus
typedef class DiaSource DiaSource;
#else
typedef struct DiaSource DiaSource;
#endif /* __cplusplus */

#endif /* __DiaSource_FWD_DEFINED__ */

#ifndef __DiaSourceAlt_FWD_DEFINED__
#define __DiaSourceAlt_FWD_DEFINED__

#ifdef __cplusplus
typedef class DiaSourceAlt DiaSourceAlt;
#else
typedef struct DiaSourceAlt DiaSourceAlt;
#endif /* __cplusplus */

#endif /* __DiaSourceAlt_FWD_DEFINED__ */

#ifndef __DiaStackWalker_FWD_DEFINED__
#define __DiaStackWalker_FWD_DEFINED__

#ifdef __cplusplus
typedef class DiaStackWalker DiaStackWalker;
#else
typedef struct DiaStackWalker DiaStackWalker;
#endif /* __cplusplus */

#endif /* __DiaStackWalker_FWD_DEFINED__ */

#ifndef __IDiaSectionContrib_FWD_DEFINED__
#define __IDiaSectionContrib_FWD_DEFINED__
typedef interface IDiaSectionContrib IDiaSectionContrib;

#endif /* __IDiaSectionContrib_FWD_DEFINED__ */

#ifndef __IDiaEnumSectionContribs_FWD_DEFINED__
#define __IDiaEnumSectionContribs_FWD_DEFINED__
typedef interface IDiaEnumSectionContribs IDiaEnumSectionContribs;

#endif /* __IDiaEnumSectionContribs_FWD_DEFINED__ */

#ifndef __IDiaSymbol_FWD_DEFINED__
#define __IDiaSymbol_FWD_DEFINED__
typedef interface IDiaSymbol IDiaSymbol;

#endif /* __IDiaSymbol_FWD_DEFINED__ */

#ifndef __IDiaSymbol2_FWD_DEFINED__
#define __IDiaSymbol2_FWD_DEFINED__
typedef interface IDiaSymbol2 IDiaSymbol2;

#endif /* __IDiaSymbol2_FWD_DEFINED__ */

#ifndef __IDiaSymbol3_FWD_DEFINED__
#define __IDiaSymbol3_FWD_DEFINED__
typedef interface IDiaSymbol3 IDiaSymbol3;

#endif /* __IDiaSymbol3_FWD_DEFINED__ */

#ifndef __IDiaSymbol4_FWD_DEFINED__
#define __IDiaSymbol4_FWD_DEFINED__
typedef interface IDiaSymbol4 IDiaSymbol4;

#endif /* __IDiaSymbol4_FWD_DEFINED__ */

#ifndef __IDiaSymbol5_FWD_DEFINED__
#define __IDiaSymbol5_FWD_DEFINED__
typedef interface IDiaSymbol5 IDiaSymbol5;

#endif /* __IDiaSymbol5_FWD_DEFINED__ */

#ifndef __IDiaSymbol6_FWD_DEFINED__
#define __IDiaSymbol6_FWD_DEFINED__
typedef interface IDiaSymbol6 IDiaSymbol6;

#endif /* __IDiaSymbol6_FWD_DEFINED__ */

#ifndef __IDiaSymbol7_FWD_DEFINED__
#define __IDiaSymbol7_FWD_DEFINED__
typedef interface IDiaSymbol7 IDiaSymbol7;

#endif /* __IDiaSymbol7_FWD_DEFINED__ */

#ifndef __IDiaSymbol8_FWD_DEFINED__
#define __IDiaSymbol8_FWD_DEFINED__
typedef interface IDiaSymbol8 IDiaSymbol8;

#endif /* __IDiaSymbol8_FWD_DEFINED__ */

#ifndef __IDiaSymbol9_FWD_DEFINED__
#define __IDiaSymbol9_FWD_DEFINED__
typedef interface IDiaSymbol9 IDiaSymbol9;

#endif /* __IDiaSymbol9_FWD_DEFINED__ */

#ifndef __IDiaSymbol10_FWD_DEFINED__
#define __IDiaSymbol10_FWD_DEFINED__
typedef interface IDiaSymbol10 IDiaSymbol10;

#endif /* __IDiaSymbol10_FWD_DEFINED__ */

#ifndef __IDiaSymbol11_FWD_DEFINED__
#define __IDiaSymbol11_FWD_DEFINED__
typedef interface IDiaSymbol11 IDiaSymbol11;

#endif /* __IDiaSymbol11_FWD_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr_FWD_DEFINED__
#define __IDiaEnumSymbolsByAddr_FWD_DEFINED__
typedef interface IDiaEnumSymbolsByAddr IDiaEnumSymbolsByAddr;

#endif /* __IDiaEnumSymbolsByAddr_FWD_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr2_FWD_DEFINED__
#define __IDiaEnumSymbolsByAddr2_FWD_DEFINED__
typedef interface IDiaEnumSymbolsByAddr2 IDiaEnumSymbolsByAddr2;

#endif /* __IDiaEnumSymbolsByAddr2_FWD_DEFINED__ */

#ifndef __IDiaPropertyStorage_FWD_DEFINED__
#define __IDiaPropertyStorage_FWD_DEFINED__
typedef interface IDiaPropertyStorage IDiaPropertyStorage;

#endif /* __IDiaPropertyStorage_FWD_DEFINED__ */

#ifndef __IDiaStackFrame_FWD_DEFINED__
#define __IDiaStackFrame_FWD_DEFINED__
typedef interface IDiaStackFrame IDiaStackFrame;

#endif /* __IDiaStackFrame_FWD_DEFINED__ */

#ifndef __IDiaEnumStackFrames_FWD_DEFINED__
#define __IDiaEnumStackFrames_FWD_DEFINED__
typedef interface IDiaEnumStackFrames IDiaEnumStackFrames;

#endif /* __IDiaEnumStackFrames_FWD_DEFINED__ */

#ifndef __IDiaStackWalkHelper_FWD_DEFINED__
#define __IDiaStackWalkHelper_FWD_DEFINED__
typedef interface IDiaStackWalkHelper IDiaStackWalkHelper;

#endif /* __IDiaStackWalkHelper_FWD_DEFINED__ */

#ifndef __IDiaStackWalker_FWD_DEFINED__
#define __IDiaStackWalker_FWD_DEFINED__
typedef interface IDiaStackWalker IDiaStackWalker;

#endif /* __IDiaStackWalker_FWD_DEFINED__ */

#ifndef __IDiaStackWalkHelper2_FWD_DEFINED__
#define __IDiaStackWalkHelper2_FWD_DEFINED__
typedef interface IDiaStackWalkHelper2 IDiaStackWalkHelper2;

#endif /* __IDiaStackWalkHelper2_FWD_DEFINED__ */

#ifndef __IDiaStackWalker2_FWD_DEFINED__
#define __IDiaStackWalker2_FWD_DEFINED__
typedef interface IDiaStackWalker2 IDiaStackWalker2;

#endif /* __IDiaStackWalker2_FWD_DEFINED__ */

#ifndef __IDiaEnumNamedStreams_FWD_DEFINED__
#define __IDiaEnumNamedStreams_FWD_DEFINED__
typedef interface IDiaEnumNamedStreams IDiaEnumNamedStreams;

#endif /* __IDiaEnumNamedStreams_FWD_DEFINED__ */

/* header files for imported files */
#include "objidl.h"
#include "oaidl.h"
#include "propidl.h"
#include "cvconst.h"

#ifdef __cplusplus
extern "C"
{
#endif

  /* interface __MIDL_itf_dia2_0000_0000 */
  /* [local] */

  enum NameSearchOptions
  {
    nsNone = 0,
    nsfCaseSensitive = 0x1,
    nsfCaseInsensitive = 0x2,
    nsfFNameExt = 0x4,
    nsfRegularExpression = 0x8,
    nsfUndecoratedName = 0x10,
    nsCaseSensitive = nsfCaseSensitive,
    nsCaseInsensitive = nsfCaseInsensitive,
    nsFNameExt = (nsfCaseInsensitive | nsfFNameExt),
    nsRegularExpression = (nsfRegularExpression | nsfCaseSensitive),
    nsCaseInRegularExpression = (nsfRegularExpression | nsfCaseInsensitive)
  };

  enum __MIDL___MIDL_itf_dia2_0000_0000_0001
  {
    E_PDB_OK = (HRESULT)((
        (((unsigned long)1 << 31) | ((unsigned long)(LONG)0x6d << 16))
        | (unsigned long)1)),
    E_PDB_USAGE = (E_PDB_OK + 1),
    E_PDB_OUT_OF_MEMORY = (E_PDB_USAGE + 1),
    E_PDB_FILE_SYSTEM = (E_PDB_OUT_OF_MEMORY + 1),
    E_PDB_NOT_FOUND = (E_PDB_FILE_SYSTEM + 1),
    E_PDB_INVALID_SIG = (E_PDB_NOT_FOUND + 1),
    E_PDB_INVALID_AGE = (E_PDB_INVALID_SIG + 1),
    E_PDB_PRECOMP_REQUIRED = (E_PDB_INVALID_AGE + 1),
    E_PDB_OUT_OF_TI = (E_PDB_PRECOMP_REQUIRED + 1),
    E_PDB_NOT_IMPLEMENTED = (E_PDB_OUT_OF_TI + 1),
    E_PDB_V1_PDB = (E_PDB_NOT_IMPLEMENTED + 1),
    E_PDB_FORMAT = (E_PDB_V1_PDB + 1),
    E_PDB_LIMIT = (E_PDB_FORMAT + 1),
    E_PDB_CORRUPT = (E_PDB_LIMIT + 1),
    E_PDB_TI16 = (E_PDB_CORRUPT + 1),
    E_PDB_ACCESS_DENIED = (E_PDB_TI16 + 1),
    E_PDB_ILLEGAL_TYPE_EDIT = (E_PDB_ACCESS_DENIED + 1),
    E_PDB_INVALID_EXECUTABLE = (E_PDB_ILLEGAL_TYPE_EDIT + 1),
    E_PDB_DBG_NOT_FOUND = (E_PDB_INVALID_EXECUTABLE + 1),
    E_PDB_NO_DEBUG_INFO = (E_PDB_DBG_NOT_FOUND + 1),
    E_PDB_INVALID_EXE_TIMESTAMP = (E_PDB_NO_DEBUG_INFO + 1),
    E_PDB_RESERVED = (E_PDB_INVALID_EXE_TIMESTAMP + 1),
    E_PDB_DEBUG_INFO_NOT_IN_PDB = (E_PDB_RESERVED + 1),
    E_PDB_SYMSRV_BAD_CACHE_PATH = (E_PDB_DEBUG_INFO_NOT_IN_PDB + 1),
    E_PDB_SYMSRV_CACHE_FULL = (E_PDB_SYMSRV_BAD_CACHE_PATH + 1),
    E_PDB_OBJECT_DISPOSED = (E_PDB_SYMSRV_CACHE_FULL + 1),
    E_PDB_MAX = (E_PDB_OBJECT_DISPOSED + 1),
    E_PDB_IFC_RECORD_MISSING_DESIGNATOR = (E_PDB_MAX + 1),
    E_PDB_IFC_RECORD_MISSING_REFERENCE =
        (E_PDB_IFC_RECORD_MISSING_DESIGNATOR + 1),
    E_PDB_IFC_FAILED_TO_LOAD = (E_PDB_IFC_RECORD_MISSING_REFERENCE + 1),
    E_PDB_IFC_FAILED_TO_LOAD_MISMATCH_HASH = (E_PDB_IFC_FAILED_TO_LOAD + 1),
    E_PDB_IFC_DEBUG_STREAM_FAILED_OPEN =
        (E_PDB_IFC_FAILED_TO_LOAD_MISMATCH_HASH + 1),
    E_PDB_IFC_DEBUG_STREAM_EMPTY = (E_PDB_IFC_DEBUG_STREAM_FAILED_OPEN + 1),
    E_PDB_IFC_DEBUG_STREAM_HASH_MISMATCH = (E_PDB_IFC_DEBUG_STREAM_EMPTY + 1),
    E_DIA_INPROLOG = (HRESULT)((
        (((unsigned long)1 << 31) | ((unsigned long)(LONG)0x6d << 16))
        | (unsigned long)100)),
    E_DIA_SYNTAX = (E_DIA_INPROLOG + 1),
    E_DIA_FRAME_ACCESS = (E_DIA_SYNTAX + 1),
    E_DIA_VALUE = (E_DIA_FRAME_ACCESS + 1),
    E_DIA_COFF_ACCESS =
        (DWORD)(((((DWORD)1 << 31) | ((DWORD)(LONG)0x6d << 16)) | (DWORD)200)),
    E_DIA_COMP_PDB_ACCESS = (E_DIA_COFF_ACCESS + 1)
  };
  typedef void(__cdecl *PfnPDBDebugDirV)(
      BOOL __MIDL____MIDL_itf_dia2_0000_00000000,
      void *__MIDL____MIDL_itf_dia2_0000_00000001);

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0000_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0000_v0_0_s_ifspec;

#ifndef __IDiaLoadCallback_INTERFACE_DEFINED__
#define __IDiaLoadCallback_INTERFACE_DEFINED__

  /* interface IDiaLoadCallback */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaLoadCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("C32ADB82-73F4-421b-95D5-A4706EDF5DBE")
  IDiaLoadCallback : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE NotifyDebugDir(
        /* [in] */ BOOL fExecutable,
        /* [in] */ DWORD cbData,
        /* [size_is][in] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyOpenDBG(
        /* [in] */ LPCOLESTR dbgPath,
        /* [in] */ HRESULT resultCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyOpenPDB(
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ HRESULT resultCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestrictRegistryAccess(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestrictSymbolServerAccess(void) = 0;
  };

#else /* C style interface */

  typedef struct IDiaLoadCallbackVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaLoadCallback *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaLoadCallback *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaLoadCallback *This);

    HRESULT(STDMETHODCALLTYPE *NotifyDebugDir)(
        IDiaLoadCallback *This,
        /* [in] */ BOOL fExecutable,
        /* [in] */ DWORD cbData,
        /* [size_is][in] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *NotifyOpenDBG)(IDiaLoadCallback *This,
                                              /* [in] */ LPCOLESTR dbgPath,
                                              /* [in] */ HRESULT resultCode);

    HRESULT(STDMETHODCALLTYPE *NotifyOpenPDB)(IDiaLoadCallback *This,
                                              /* [in] */ LPCOLESTR pdbPath,
                                              /* [in] */ HRESULT resultCode);

    HRESULT(STDMETHODCALLTYPE *RestrictRegistryAccess)(IDiaLoadCallback *This);

    HRESULT(STDMETHODCALLTYPE *RestrictSymbolServerAccess)(
        IDiaLoadCallback *This);

    END_INTERFACE
  } IDiaLoadCallbackVtbl;

  interface IDiaLoadCallback
  {
    CONST_VTBL struct IDiaLoadCallbackVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaLoadCallback_QueryInterface(This, riid, ppvObject)                 \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaLoadCallback_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaLoadCallback_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaLoadCallback_NotifyDebugDir(This, fExecutable, cbData, pbData)     \
  ((This)->lpVtbl->NotifyDebugDir(This, fExecutable, cbData, pbData))

#define IDiaLoadCallback_NotifyOpenDBG(This, dbgPath, resultCode)              \
  ((This)->lpVtbl->NotifyOpenDBG(This, dbgPath, resultCode))

#define IDiaLoadCallback_NotifyOpenPDB(This, pdbPath, resultCode)              \
  ((This)->lpVtbl->NotifyOpenPDB(This, pdbPath, resultCode))

#define IDiaLoadCallback_RestrictRegistryAccess(This)                          \
  ((This)->lpVtbl->RestrictRegistryAccess(This))

#define IDiaLoadCallback_RestrictSymbolServerAccess(This)                      \
  ((This)->lpVtbl->RestrictSymbolServerAccess(This))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaLoadCallback_INTERFACE_DEFINED__ */

#ifndef __IDiaLoadCallback2_INTERFACE_DEFINED__
#define __IDiaLoadCallback2_INTERFACE_DEFINED__

  /* interface IDiaLoadCallback2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaLoadCallback2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("4688a074-5a4d-4486-aea8-7b90711d9f7c")
  IDiaLoadCallback2 : public IDiaLoadCallback
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE RestrictOriginalPathAccess(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestrictReferencePathAccess(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestrictDBGAccess(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestrictSystemRootAccess(void) = 0;
  };

#else /* C style interface */

  typedef struct IDiaLoadCallback2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaLoadCallback2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaLoadCallback2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *NotifyDebugDir)(
        IDiaLoadCallback2 *This,
        /* [in] */ BOOL fExecutable,
        /* [in] */ DWORD cbData,
        /* [size_is][in] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *NotifyOpenDBG)(IDiaLoadCallback2 *This,
                                              /* [in] */ LPCOLESTR dbgPath,
                                              /* [in] */ HRESULT resultCode);

    HRESULT(STDMETHODCALLTYPE *NotifyOpenPDB)(IDiaLoadCallback2 *This,
                                              /* [in] */ LPCOLESTR pdbPath,
                                              /* [in] */ HRESULT resultCode);

    HRESULT(STDMETHODCALLTYPE *RestrictRegistryAccess)(IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *RestrictSymbolServerAccess)(
        IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *RestrictOriginalPathAccess)(
        IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *RestrictReferencePathAccess)(
        IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *RestrictDBGAccess)(IDiaLoadCallback2 *This);

    HRESULT(STDMETHODCALLTYPE *RestrictSystemRootAccess)(
        IDiaLoadCallback2 *This);

    END_INTERFACE
  } IDiaLoadCallback2Vtbl;

  interface IDiaLoadCallback2
  {
    CONST_VTBL struct IDiaLoadCallback2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaLoadCallback2_QueryInterface(This, riid, ppvObject)                \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaLoadCallback2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaLoadCallback2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaLoadCallback2_NotifyDebugDir(This, fExecutable, cbData, pbData)    \
  ((This)->lpVtbl->NotifyDebugDir(This, fExecutable, cbData, pbData))

#define IDiaLoadCallback2_NotifyOpenDBG(This, dbgPath, resultCode)             \
  ((This)->lpVtbl->NotifyOpenDBG(This, dbgPath, resultCode))

#define IDiaLoadCallback2_NotifyOpenPDB(This, pdbPath, resultCode)             \
  ((This)->lpVtbl->NotifyOpenPDB(This, pdbPath, resultCode))

#define IDiaLoadCallback2_RestrictRegistryAccess(This)                         \
  ((This)->lpVtbl->RestrictRegistryAccess(This))

#define IDiaLoadCallback2_RestrictSymbolServerAccess(This)                     \
  ((This)->lpVtbl->RestrictSymbolServerAccess(This))

#define IDiaLoadCallback2_RestrictOriginalPathAccess(This)                     \
  ((This)->lpVtbl->RestrictOriginalPathAccess(This))

#define IDiaLoadCallback2_RestrictReferencePathAccess(This)                    \
  ((This)->lpVtbl->RestrictReferencePathAccess(This))

#define IDiaLoadCallback2_RestrictDBGAccess(This)                              \
  ((This)->lpVtbl->RestrictDBGAccess(This))

#define IDiaLoadCallback2_RestrictSystemRootAccess(This)                       \
  ((This)->lpVtbl->RestrictSystemRootAccess(This))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaLoadCallback2_INTERFACE_DEFINED__ */

#ifndef __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__
#define __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__

  /* interface IDiaReadExeAtOffsetCallback */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaReadExeAtOffsetCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("587A461C-B80B-4f54-9194-5032589A6319")
  IDiaReadExeAtOffsetCallback : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE ReadExecutableAt(
        /* [in] */ DWORDLONG fileOffset,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;
  };

#else /* C style interface */

  typedef struct IDiaReadExeAtOffsetCallbackVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(
        IDiaReadExeAtOffsetCallback *This,
        /* [in] */ REFIID riid,
        /* [annotation][iid_is][out] */
        _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaReadExeAtOffsetCallback *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaReadExeAtOffsetCallback *This);

    HRESULT(STDMETHODCALLTYPE *ReadExecutableAt)(
        IDiaReadExeAtOffsetCallback *This,
        /* [in] */ DWORDLONG fileOffset,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    END_INTERFACE
  } IDiaReadExeAtOffsetCallbackVtbl;

  interface IDiaReadExeAtOffsetCallback
  {
    CONST_VTBL struct IDiaReadExeAtOffsetCallbackVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaReadExeAtOffsetCallback_QueryInterface(This, riid, ppvObject)      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaReadExeAtOffsetCallback_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaReadExeAtOffsetCallback_Release(This)                              \
  ((This)->lpVtbl->Release(This))

#define IDiaReadExeAtOffsetCallback_ReadExecutableAt(This, fileOffset, cbData, \
                                                     pcbData, pbData)          \
  ((This)->lpVtbl->ReadExecutableAt(This, fileOffset, cbData, pcbData, pbData))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__ */

#ifndef __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__
#define __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__

  /* interface IDiaReadExeAtRVACallback */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaReadExeAtRVACallback;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("8E3F80CA-7517-432a-BA07-285134AAEA8E")
  IDiaReadExeAtRVACallback : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE ReadExecutableAtRVA(
        /* [in] */ DWORD relativeVirtualAddress,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;
  };

#else /* C style interface */

  typedef struct IDiaReadExeAtRVACallbackVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaReadExeAtRVACallback *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaReadExeAtRVACallback *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaReadExeAtRVACallback *This);

    HRESULT(STDMETHODCALLTYPE *ReadExecutableAtRVA)(
        IDiaReadExeAtRVACallback *This,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    END_INTERFACE
  } IDiaReadExeAtRVACallbackVtbl;

  interface IDiaReadExeAtRVACallback
  {
    CONST_VTBL struct IDiaReadExeAtRVACallbackVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaReadExeAtRVACallback_QueryInterface(This, riid, ppvObject)         \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaReadExeAtRVACallback_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaReadExeAtRVACallback_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaReadExeAtRVACallback_ReadExecutableAtRVA(                          \
    This, relativeVirtualAddress, cbData, pcbData, pbData)                     \
  ((This)->lpVtbl->ReadExecutableAtRVA(This, relativeVirtualAddress, cbData,   \
                                       pcbData, pbData))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__ */

#ifndef __IDiaDataSource_INTERFACE_DEFINED__
#define __IDiaDataSource_INTERFACE_DEFINED__

  /* interface IDiaDataSource */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaDataSource;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("79F1BB5F-B66E-48e5-B6A9-1545C323CA3D")
  IDiaDataSource : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lastError(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataFromPdb(
        /* [in] */ LPCOLESTR pdbPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadAndValidateDataFromPdb(
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID * pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataForExe(
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ IUnknown * pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataFromIStream(
        /* [in] */ IStream * pIStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE openSession(
        /* [out] */ IDiaSession * *ppSession) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataFromCodeViewInfo(
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD cbCvInfo,
        /* [size_is][in] */ BYTE * pbCvInfo,
        /* [in] */ IUnknown * pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataFromMiscInfo(
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD timeStampExe,
        /* [in] */ DWORD timeStampDbg,
        /* [in] */ DWORD sizeOfExe,
        /* [in] */ DWORD cbMiscInfo,
        /* [size_is][in] */ BYTE * pbMiscInfo,
        /* [in] */ IUnknown * pCallback) = 0;
  };

#else /* C style interface */

  typedef struct IDiaDataSourceVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaDataSource *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaDataSource *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaDataSource *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lastError)(
        IDiaDataSource *This,
        /* [retval][out] */ BSTR *pRetVal);

    HRESULT(STDMETHODCALLTYPE *loadDataFromPdb)(IDiaDataSource *This,
                                                /* [in] */ LPCOLESTR pdbPath);

    HRESULT(STDMETHODCALLTYPE *loadAndValidateDataFromPdb)(
        IDiaDataSource *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age);

    HRESULT(STDMETHODCALLTYPE *loadDataForExe)(IDiaDataSource *This,
                                               /* [in] */ LPCOLESTR executable,
                                               /* [in] */ LPCOLESTR searchPath,
                                               /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromIStream)(
        IDiaDataSource *This,
        /* [in] */ IStream *pIStream);

    HRESULT(STDMETHODCALLTYPE *openSession)(
        IDiaDataSource *This,
        /* [out] */ IDiaSession **ppSession);

    HRESULT(STDMETHODCALLTYPE *loadDataFromCodeViewInfo)(
        IDiaDataSource *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD cbCvInfo,
        /* [size_is][in] */ BYTE *pbCvInfo,
        /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromMiscInfo)(
        IDiaDataSource *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD timeStampExe,
        /* [in] */ DWORD timeStampDbg,
        /* [in] */ DWORD sizeOfExe,
        /* [in] */ DWORD cbMiscInfo,
        /* [size_is][in] */ BYTE *pbMiscInfo,
        /* [in] */ IUnknown *pCallback);

    END_INTERFACE
  } IDiaDataSourceVtbl;

  interface IDiaDataSource { CONST_VTBL struct IDiaDataSourceVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaDataSource_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaDataSource_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaDataSource_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaDataSource_get_lastError(This, pRetVal)                            \
  ((This)->lpVtbl->get_lastError(This, pRetVal))

#define IDiaDataSource_loadDataFromPdb(This, pdbPath)                          \
  ((This)->lpVtbl->loadDataFromPdb(This, pdbPath))

#define IDiaDataSource_loadAndValidateDataFromPdb(This, pdbPath, pcsig70, sig, \
                                                  age)                         \
  ((This)->lpVtbl->loadAndValidateDataFromPdb(This, pdbPath, pcsig70, sig, age))

#define IDiaDataSource_loadDataForExe(This, executable, searchPath, pCallback) \
  ((This)->lpVtbl->loadDataForExe(This, executable, searchPath, pCallback))

#define IDiaDataSource_loadDataFromIStream(This, pIStream)                     \
  ((This)->lpVtbl->loadDataFromIStream(This, pIStream))

#define IDiaDataSource_openSession(This, ppSession)                            \
  ((This)->lpVtbl->openSession(This, ppSession))

#define IDiaDataSource_loadDataFromCodeViewInfo(This, executable, searchPath,  \
                                                cbCvInfo, pbCvInfo, pCallback) \
  ((This)->lpVtbl->loadDataFromCodeViewInfo(This, executable, searchPath,      \
                                            cbCvInfo, pbCvInfo, pCallback))

#define IDiaDataSource_loadDataFromMiscInfo(                                   \
    This, executable, searchPath, timeStampExe, timeStampDbg, sizeOfExe,       \
    cbMiscInfo, pbMiscInfo, pCallback)                                         \
  ((This)->lpVtbl->loadDataFromMiscInfo(This, executable, searchPath,          \
                                        timeStampExe, timeStampDbg, sizeOfExe, \
                                        cbMiscInfo, pbMiscInfo, pCallback))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaDataSource_INTERFACE_DEFINED__ */

  /* interface __MIDL_itf_dia2_0000_0005 */
  /* [local] */

  typedef HRESULT(__cdecl *PFNMINIPDBERRORCALLBACK2)(void *pvContext,
                                                     DWORD dwErrorCode,
                                                     const LPCOLESTR szObjOrPdb,
                                                     const LPCOLESTR szLib);

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0005_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0005_v0_0_s_ifspec;

#ifndef __IDiaDataSourceEx_INTERFACE_DEFINED__
#define __IDiaDataSourceEx_INTERFACE_DEFINED__

  /* interface IDiaDataSourceEx */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaDataSourceEx;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("1a21eb69-962a-4bc4-8bd3-681797d38b23")
  IDiaDataSourceEx : public IDiaDataSource
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE loadDataFromPdbEx(
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ BOOL fPdbPrefetching) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadAndValidateDataFromPdbEx(
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID * pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age,
        /* [in] */ BOOL fPdbPrefetching) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataForExeEx(
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ IUnknown * pCallback,
        /* [in] */ BOOL fPdbPrefetching) = 0;

    virtual HRESULT STDMETHODCALLTYPE loadDataFromIStreamEx(
        /* [in] */ IStream * pIStream,
        /* [in] */ BOOL fPdbPrefetching) = 0;

    virtual HRESULT STDMETHODCALLTYPE getStreamSize(
        /* [in] */ LPCOLESTR stream,
        /* [out] */ ULONGLONG * pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE getStreamRawData(
        /* [in] */ LPCOLESTR stream,
        /* [in] */ ULONGLONG cbOffset,
        /* [in] */ ULONGLONG cbRead,
        /* [out] */ ULONGLONG * pcbRead,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE setPfnMiniPDBErrorCallback2(
        /* [in] */ void *pvContext,
        /* [in] */ PFNMINIPDBERRORCALLBACK2 pfn) = 0;

    virtual HRESULT STDMETHODCALLTYPE ValidatePdb(
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ const GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age,
        /* [out] */ BOOL *pfStripped) = 0;
  };

#else /* C style interface */

  typedef struct IDiaDataSourceExVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaDataSourceEx *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaDataSourceEx *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaDataSourceEx *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lastError)(
        IDiaDataSourceEx *This,
        /* [retval][out] */ BSTR *pRetVal);

    HRESULT(STDMETHODCALLTYPE *loadDataFromPdb)(IDiaDataSourceEx *This,
                                                /* [in] */ LPCOLESTR pdbPath);

    HRESULT(STDMETHODCALLTYPE *loadAndValidateDataFromPdb)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age);

    HRESULT(STDMETHODCALLTYPE *loadDataForExe)(IDiaDataSourceEx *This,
                                               /* [in] */ LPCOLESTR executable,
                                               /* [in] */ LPCOLESTR searchPath,
                                               /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromIStream)(
        IDiaDataSourceEx *This,
        /* [in] */ IStream *pIStream);

    HRESULT(STDMETHODCALLTYPE *openSession)(
        IDiaDataSourceEx *This,
        /* [out] */ IDiaSession **ppSession);

    HRESULT(STDMETHODCALLTYPE *loadDataFromCodeViewInfo)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD cbCvInfo,
        /* [size_is][in] */ BYTE *pbCvInfo,
        /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromMiscInfo)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD timeStampExe,
        /* [in] */ DWORD timeStampDbg,
        /* [in] */ DWORD sizeOfExe,
        /* [in] */ DWORD cbMiscInfo,
        /* [size_is][in] */ BYTE *pbMiscInfo,
        /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromPdbEx)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadAndValidateDataFromPdbEx)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadDataForExeEx)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ IUnknown *pCallback,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadDataFromIStreamEx)(
        IDiaDataSourceEx *This,
        /* [in] */ IStream *pIStream,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *getStreamSize)(IDiaDataSourceEx *This,
                                              /* [in] */ LPCOLESTR stream,
                                              /* [out] */ ULONGLONG *pcb);

    HRESULT(STDMETHODCALLTYPE *getStreamRawData)(
        IDiaDataSourceEx *This,
        /* [in] */ LPCOLESTR stream,
        /* [in] */ ULONGLONG cbOffset,
        /* [in] */ ULONGLONG cbRead,
        /* [out] */ ULONGLONG *pcbRead,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *setPfnMiniPDBErrorCallback2)(
        IDiaDataSourceEx *This,
        /* [in] */ void *pvContext,
        /* [in] */ PFNMINIPDBERRORCALLBACK2 pfn);

    HRESULT(STDMETHODCALLTYPE *ValidatePdb)(IDiaDataSourceEx *This,
                                            /* [in] */ LPCOLESTR pdbPath,
                                            /* [in] */ const GUID *pcsig70,
                                            /* [in] */ DWORD sig,
                                            /* [in] */ DWORD age,
                                            /* [out] */ BOOL *pfStripped);

    END_INTERFACE
  } IDiaDataSourceExVtbl;

  interface IDiaDataSourceEx
  {
    CONST_VTBL struct IDiaDataSourceExVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaDataSourceEx_QueryInterface(This, riid, ppvObject)                 \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaDataSourceEx_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaDataSourceEx_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaDataSourceEx_get_lastError(This, pRetVal)                          \
  ((This)->lpVtbl->get_lastError(This, pRetVal))

#define IDiaDataSourceEx_loadDataFromPdb(This, pdbPath)                        \
  ((This)->lpVtbl->loadDataFromPdb(This, pdbPath))

#define IDiaDataSourceEx_loadAndValidateDataFromPdb(This, pdbPath, pcsig70,    \
                                                    sig, age)                  \
  ((This)->lpVtbl->loadAndValidateDataFromPdb(This, pdbPath, pcsig70, sig, age))

#define IDiaDataSourceEx_loadDataForExe(This, executable, searchPath,          \
                                        pCallback)                             \
  ((This)->lpVtbl->loadDataForExe(This, executable, searchPath, pCallback))

#define IDiaDataSourceEx_loadDataFromIStream(This, pIStream)                   \
  ((This)->lpVtbl->loadDataFromIStream(This, pIStream))

#define IDiaDataSourceEx_openSession(This, ppSession)                          \
  ((This)->lpVtbl->openSession(This, ppSession))

#define IDiaDataSourceEx_loadDataFromCodeViewInfo(                             \
    This, executable, searchPath, cbCvInfo, pbCvInfo, pCallback)               \
  ((This)->lpVtbl->loadDataFromCodeViewInfo(This, executable, searchPath,      \
                                            cbCvInfo, pbCvInfo, pCallback))

#define IDiaDataSourceEx_loadDataFromMiscInfo(                                 \
    This, executable, searchPath, timeStampExe, timeStampDbg, sizeOfExe,       \
    cbMiscInfo, pbMiscInfo, pCallback)                                         \
  ((This)->lpVtbl->loadDataFromMiscInfo(This, executable, searchPath,          \
                                        timeStampExe, timeStampDbg, sizeOfExe, \
                                        cbMiscInfo, pbMiscInfo, pCallback))

#define IDiaDataSourceEx_loadDataFromPdbEx(This, pdbPath, fPdbPrefetching)     \
  ((This)->lpVtbl->loadDataFromPdbEx(This, pdbPath, fPdbPrefetching))

#define IDiaDataSourceEx_loadAndValidateDataFromPdbEx(                         \
    This, pdbPath, pcsig70, sig, age, fPdbPrefetching)                         \
  ((This)->lpVtbl->loadAndValidateDataFromPdbEx(This, pdbPath, pcsig70, sig,   \
                                                age, fPdbPrefetching))

#define IDiaDataSourceEx_loadDataForExeEx(This, executable, searchPath,        \
                                          pCallback, fPdbPrefetching)          \
  ((This)->lpVtbl->loadDataForExeEx(This, executable, searchPath, pCallback,   \
                                    fPdbPrefetching))

#define IDiaDataSourceEx_loadDataFromIStreamEx(This, pIStream,                 \
                                               fPdbPrefetching)                \
  ((This)->lpVtbl->loadDataFromIStreamEx(This, pIStream, fPdbPrefetching))

#define IDiaDataSourceEx_getStreamSize(This, stream, pcb)                      \
  ((This)->lpVtbl->getStreamSize(This, stream, pcb))

#define IDiaDataSourceEx_getStreamRawData(This, stream, cbOffset, cbRead,      \
                                          pcbRead, pbData)                     \
  ((This)->lpVtbl->getStreamRawData(This, stream, cbOffset, cbRead, pcbRead,   \
                                    pbData))

#define IDiaDataSourceEx_setPfnMiniPDBErrorCallback2(This, pvContext, pfn)     \
  ((This)->lpVtbl->setPfnMiniPDBErrorCallback2(This, pvContext, pfn))

#define IDiaDataSourceEx_ValidatePdb(This, pdbPath, pcsig70, sig, age,         \
                                     pfStripped)                               \
  ((This)->lpVtbl->ValidatePdb(This, pdbPath, pcsig70, sig, age, pfStripped))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaDataSourceEx_INTERFACE_DEFINED__ */

#ifndef __IDiaDataSourceEx2_INTERFACE_DEFINED__
#define __IDiaDataSourceEx2_INTERFACE_DEFINED__

  /* interface IDiaDataSourceEx2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaDataSourceEx2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("D240C8DD-1A0F-456E-80A6-4F1D06BF5DF4")
  IDiaDataSourceEx2 : public IDiaDataSourceEx
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE findNamedStreams(
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumNamedStreams * *ppResult) = 0;
  };

#else /* C style interface */

  typedef struct IDiaDataSourceEx2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaDataSourceEx2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaDataSourceEx2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaDataSourceEx2 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lastError)(
        IDiaDataSourceEx2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    HRESULT(STDMETHODCALLTYPE *loadDataFromPdb)(IDiaDataSourceEx2 *This,
                                                /* [in] */ LPCOLESTR pdbPath);

    HRESULT(STDMETHODCALLTYPE *loadAndValidateDataFromPdb)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age);

    HRESULT(STDMETHODCALLTYPE *loadDataForExe)(IDiaDataSourceEx2 *This,
                                               /* [in] */ LPCOLESTR executable,
                                               /* [in] */ LPCOLESTR searchPath,
                                               /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromIStream)(
        IDiaDataSourceEx2 *This,
        /* [in] */ IStream *pIStream);

    HRESULT(STDMETHODCALLTYPE *openSession)(
        IDiaDataSourceEx2 *This,
        /* [out] */ IDiaSession **ppSession);

    HRESULT(STDMETHODCALLTYPE *loadDataFromCodeViewInfo)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD cbCvInfo,
        /* [size_is][in] */ BYTE *pbCvInfo,
        /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromMiscInfo)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ DWORD timeStampExe,
        /* [in] */ DWORD timeStampDbg,
        /* [in] */ DWORD sizeOfExe,
        /* [in] */ DWORD cbMiscInfo,
        /* [size_is][in] */ BYTE *pbMiscInfo,
        /* [in] */ IUnknown *pCallback);

    HRESULT(STDMETHODCALLTYPE *loadDataFromPdbEx)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadAndValidateDataFromPdbEx)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR pdbPath,
        /* [in] */ GUID *pcsig70,
        /* [in] */ DWORD sig,
        /* [in] */ DWORD age,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadDataForExeEx)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR executable,
        /* [in] */ LPCOLESTR searchPath,
        /* [in] */ IUnknown *pCallback,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *loadDataFromIStreamEx)(
        IDiaDataSourceEx2 *This,
        /* [in] */ IStream *pIStream,
        /* [in] */ BOOL fPdbPrefetching);

    HRESULT(STDMETHODCALLTYPE *getStreamSize)(IDiaDataSourceEx2 *This,
                                              /* [in] */ LPCOLESTR stream,
                                              /* [out] */ ULONGLONG *pcb);

    HRESULT(STDMETHODCALLTYPE *getStreamRawData)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR stream,
        /* [in] */ ULONGLONG cbOffset,
        /* [in] */ ULONGLONG cbRead,
        /* [out] */ ULONGLONG *pcbRead,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *setPfnMiniPDBErrorCallback2)(
        IDiaDataSourceEx2 *This,
        /* [in] */ void *pvContext,
        /* [in] */ PFNMINIPDBERRORCALLBACK2 pfn);

    HRESULT(STDMETHODCALLTYPE *ValidatePdb)(IDiaDataSourceEx2 *This,
                                            /* [in] */ LPCOLESTR pdbPath,
                                            /* [in] */ const GUID *pcsig70,
                                            /* [in] */ DWORD sig,
                                            /* [in] */ DWORD age,
                                            /* [out] */ BOOL *pfStripped);

    HRESULT(STDMETHODCALLTYPE *findNamedStreams)(
        IDiaDataSourceEx2 *This,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumNamedStreams **ppResult);

    END_INTERFACE
  } IDiaDataSourceEx2Vtbl;

  interface IDiaDataSourceEx2
  {
    CONST_VTBL struct IDiaDataSourceEx2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaDataSourceEx2_QueryInterface(This, riid, ppvObject)                \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaDataSourceEx2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaDataSourceEx2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaDataSourceEx2_get_lastError(This, pRetVal)                         \
  ((This)->lpVtbl->get_lastError(This, pRetVal))

#define IDiaDataSourceEx2_loadDataFromPdb(This, pdbPath)                       \
  ((This)->lpVtbl->loadDataFromPdb(This, pdbPath))

#define IDiaDataSourceEx2_loadAndValidateDataFromPdb(This, pdbPath, pcsig70,   \
                                                     sig, age)                 \
  ((This)->lpVtbl->loadAndValidateDataFromPdb(This, pdbPath, pcsig70, sig, age))

#define IDiaDataSourceEx2_loadDataForExe(This, executable, searchPath,         \
                                         pCallback)                            \
  ((This)->lpVtbl->loadDataForExe(This, executable, searchPath, pCallback))

#define IDiaDataSourceEx2_loadDataFromIStream(This, pIStream)                  \
  ((This)->lpVtbl->loadDataFromIStream(This, pIStream))

#define IDiaDataSourceEx2_openSession(This, ppSession)                         \
  ((This)->lpVtbl->openSession(This, ppSession))

#define IDiaDataSourceEx2_loadDataFromCodeViewInfo(                            \
    This, executable, searchPath, cbCvInfo, pbCvInfo, pCallback)               \
  ((This)->lpVtbl->loadDataFromCodeViewInfo(This, executable, searchPath,      \
                                            cbCvInfo, pbCvInfo, pCallback))

#define IDiaDataSourceEx2_loadDataFromMiscInfo(                                \
    This, executable, searchPath, timeStampExe, timeStampDbg, sizeOfExe,       \
    cbMiscInfo, pbMiscInfo, pCallback)                                         \
  ((This)->lpVtbl->loadDataFromMiscInfo(This, executable, searchPath,          \
                                        timeStampExe, timeStampDbg, sizeOfExe, \
                                        cbMiscInfo, pbMiscInfo, pCallback))

#define IDiaDataSourceEx2_loadDataFromPdbEx(This, pdbPath, fPdbPrefetching)    \
  ((This)->lpVtbl->loadDataFromPdbEx(This, pdbPath, fPdbPrefetching))

#define IDiaDataSourceEx2_loadAndValidateDataFromPdbEx(                        \
    This, pdbPath, pcsig70, sig, age, fPdbPrefetching)                         \
  ((This)->lpVtbl->loadAndValidateDataFromPdbEx(This, pdbPath, pcsig70, sig,   \
                                                age, fPdbPrefetching))

#define IDiaDataSourceEx2_loadDataForExeEx(This, executable, searchPath,       \
                                           pCallback, fPdbPrefetching)         \
  ((This)->lpVtbl->loadDataForExeEx(This, executable, searchPath, pCallback,   \
                                    fPdbPrefetching))

#define IDiaDataSourceEx2_loadDataFromIStreamEx(This, pIStream,                \
                                                fPdbPrefetching)               \
  ((This)->lpVtbl->loadDataFromIStreamEx(This, pIStream, fPdbPrefetching))

#define IDiaDataSourceEx2_getStreamSize(This, stream, pcb)                     \
  ((This)->lpVtbl->getStreamSize(This, stream, pcb))

#define IDiaDataSourceEx2_getStreamRawData(This, stream, cbOffset, cbRead,     \
                                           pcbRead, pbData)                    \
  ((This)->lpVtbl->getStreamRawData(This, stream, cbOffset, cbRead, pcbRead,   \
                                    pbData))

#define IDiaDataSourceEx2_setPfnMiniPDBErrorCallback2(This, pvContext, pfn)    \
  ((This)->lpVtbl->setPfnMiniPDBErrorCallback2(This, pvContext, pfn))

#define IDiaDataSourceEx2_ValidatePdb(This, pdbPath, pcsig70, sig, age,        \
                                      pfStripped)                              \
  ((This)->lpVtbl->ValidatePdb(This, pdbPath, pcsig70, sig, age, pfStripped))

#define IDiaDataSourceEx2_findNamedStreams(This, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findNamedStreams(This, name, compareFlags, ppResult))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaDataSourceEx2_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSymbols_INTERFACE_DEFINED__
#define __IDiaEnumSymbols_INTERFACE_DEFINED__

  /* interface IDiaEnumSymbols */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSymbols;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("CAB72C48-443B-48f5-9B0B-42F0820AB29A")
  IDiaEnumSymbols : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSymbol * *symbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSymbol * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSymbols * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSymbolsVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSymbols *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSymbols *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSymbols *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumSymbols *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumSymbols *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumSymbols *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSymbol **symbol);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSymbols *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSymbol **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSymbols *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSymbols *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumSymbols *This,
                                      /* [out] */ IDiaEnumSymbols **ppenum);

    END_INTERFACE
  } IDiaEnumSymbolsVtbl;

  interface IDiaEnumSymbols { CONST_VTBL struct IDiaEnumSymbolsVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaEnumSymbols_QueryInterface(This, riid, ppvObject)                  \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSymbols_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSymbols_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSymbols_get__NewEnum(This, pRetVal)                            \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumSymbols_get_Count(This, pRetVal)                               \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumSymbols_Item(This, index, symbol)                              \
  ((This)->lpVtbl->Item(This, index, symbol))

#define IDiaEnumSymbols_Next(This, celt, rgelt, pceltFetched)                  \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSymbols_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumSymbols_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSymbols_Clone(This, ppenum)                                    \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSymbols_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__
#define __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__

  /* interface IDiaEnumSymbolsByAddr */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSymbolsByAddr;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("624B7D9C-24EA-4421-9D06-3B577471C1FA")
  IDiaEnumSymbolsByAddr : public IUnknown
  {
  public:
    virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByAddr(
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByRVA(
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByVA(
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSymbol * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Prev(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSymbol * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSymbolsByAddr * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSymbolsByAddrVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSymbolsByAddr *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSymbolsByAddr *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSymbolsByAddr *This);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByAddr)(
        IDiaEnumSymbolsByAddr *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByRVA)(
        IDiaEnumSymbolsByAddr *This,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByVA)(
        IDiaEnumSymbolsByAddr *This,
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSymbolsByAddr *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSymbol **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Prev)(IDiaEnumSymbolsByAddr *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSymbol **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumSymbolsByAddr *This,
        /* [out] */ IDiaEnumSymbolsByAddr **ppenum);

    END_INTERFACE
  } IDiaEnumSymbolsByAddrVtbl;

  interface IDiaEnumSymbolsByAddr
  {
    CONST_VTBL struct IDiaEnumSymbolsByAddrVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSymbolsByAddr_QueryInterface(This, riid, ppvObject)            \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSymbolsByAddr_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSymbolsByAddr_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSymbolsByAddr_symbolByAddr(This, isect, offset, ppSymbol)      \
  ((This)->lpVtbl->symbolByAddr(This, isect, offset, ppSymbol))

#define IDiaEnumSymbolsByAddr_symbolByRVA(This, relativeVirtualAddress,        \
                                          ppSymbol)                            \
  ((This)->lpVtbl->symbolByRVA(This, relativeVirtualAddress, ppSymbol))

#define IDiaEnumSymbolsByAddr_symbolByVA(This, virtualAddress, ppSymbol)       \
  ((This)->lpVtbl->symbolByVA(This, virtualAddress, ppSymbol))

#define IDiaEnumSymbolsByAddr_Next(This, celt, rgelt, pceltFetched)            \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSymbolsByAddr_Prev(This, celt, rgelt, pceltFetched)            \
  ((This)->lpVtbl->Prev(This, celt, rgelt, pceltFetched))

#define IDiaEnumSymbolsByAddr_Clone(This, ppenum)                              \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSymbolsByAddr2_INTERFACE_DEFINED__
#define __IDiaEnumSymbolsByAddr2_INTERFACE_DEFINED__

  /* interface IDiaEnumSymbolsByAddr2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSymbolsByAddr2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("1E45BD02-BE45-4D71-BA32-0E576CFCD59F")
  IDiaEnumSymbolsByAddr2 : public IDiaEnumSymbolsByAddr
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE symbolByAddrEx(
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE symbolByRVAEx(
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE symbolByVAEx(
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE NextEx(
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSymbol * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE PrevEx(
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSymbol * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSymbolsByAddr2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSymbolsByAddr2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSymbolsByAddr2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSymbolsByAddr2 *This);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByAddr)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByRVA)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *symbolByVA)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSymbolsByAddr2 *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSymbol **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Prev)(IDiaEnumSymbolsByAddr2 *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSymbol **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [out] */ IDiaEnumSymbolsByAddr **ppenum);

    HRESULT(STDMETHODCALLTYPE *symbolByAddrEx)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *symbolByRVAEx)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *symbolByVAEx)(
        IDiaEnumSymbolsByAddr2 *This,
        /* [in] */ BOOL fPromoteBlockSym,
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *NextEx)(IDiaEnumSymbolsByAddr2 *This,
                                       /* [in] */ BOOL fPromoteBlockSym,
                                       /* [in] */ ULONG celt,
                                       /* [out] */ IDiaSymbol **rgelt,
                                       /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *PrevEx)(IDiaEnumSymbolsByAddr2 *This,
                                       /* [in] */ BOOL fPromoteBlockSym,
                                       /* [in] */ ULONG celt,
                                       /* [out] */ IDiaSymbol **rgelt,
                                       /* [out] */ ULONG *pceltFetched);

    END_INTERFACE
  } IDiaEnumSymbolsByAddr2Vtbl;

  interface IDiaEnumSymbolsByAddr2
  {
    CONST_VTBL struct IDiaEnumSymbolsByAddr2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSymbolsByAddr2_QueryInterface(This, riid, ppvObject)           \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSymbolsByAddr2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSymbolsByAddr2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSymbolsByAddr2_symbolByAddr(This, isect, offset, ppSymbol)     \
  ((This)->lpVtbl->symbolByAddr(This, isect, offset, ppSymbol))

#define IDiaEnumSymbolsByAddr2_symbolByRVA(This, relativeVirtualAddress,       \
                                           ppSymbol)                           \
  ((This)->lpVtbl->symbolByRVA(This, relativeVirtualAddress, ppSymbol))

#define IDiaEnumSymbolsByAddr2_symbolByVA(This, virtualAddress, ppSymbol)      \
  ((This)->lpVtbl->symbolByVA(This, virtualAddress, ppSymbol))

#define IDiaEnumSymbolsByAddr2_Next(This, celt, rgelt, pceltFetched)           \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSymbolsByAddr2_Prev(This, celt, rgelt, pceltFetched)           \
  ((This)->lpVtbl->Prev(This, celt, rgelt, pceltFetched))

#define IDiaEnumSymbolsByAddr2_Clone(This, ppenum)                             \
  ((This)->lpVtbl->Clone(This, ppenum))

#define IDiaEnumSymbolsByAddr2_symbolByAddrEx(This, fPromoteBlockSym, isect,   \
                                              offset, ppSymbol)                \
  ((This)->lpVtbl->symbolByAddrEx(This, fPromoteBlockSym, isect, offset,       \
                                  ppSymbol))

#define IDiaEnumSymbolsByAddr2_symbolByRVAEx(This, fPromoteBlockSym,           \
                                             relativeVirtualAddress, ppSymbol) \
  ((This)->lpVtbl->symbolByRVAEx(This, fPromoteBlockSym,                       \
                                 relativeVirtualAddress, ppSymbol))

#define IDiaEnumSymbolsByAddr2_symbolByVAEx(This, fPromoteBlockSym,            \
                                            virtualAddress, ppSymbol)          \
  ((This)->lpVtbl->symbolByVAEx(This, fPromoteBlockSym, virtualAddress,        \
                                ppSymbol))

#define IDiaEnumSymbolsByAddr2_NextEx(This, fPromoteBlockSym, celt, rgelt,     \
                                      pceltFetched)                            \
  ((This)->lpVtbl->NextEx(This, fPromoteBlockSym, celt, rgelt, pceltFetched))

#define IDiaEnumSymbolsByAddr2_PrevEx(This, fPromoteBlockSym, celt, rgelt,     \
                                      pceltFetched)                            \
  ((This)->lpVtbl->PrevEx(This, fPromoteBlockSym, celt, rgelt, pceltFetched))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSymbolsByAddr2_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSourceFiles_INTERFACE_DEFINED__
#define __IDiaEnumSourceFiles_INTERFACE_DEFINED__

  /* interface IDiaEnumSourceFiles */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSourceFiles;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("10F3DBD9-664F-4469-B808-9471C7A50538")
  IDiaEnumSourceFiles : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSourceFile * *sourceFile) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSourceFile * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSourceFiles * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSourceFilesVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSourceFiles *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSourceFiles *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSourceFiles *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumSourceFiles *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumSourceFiles *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumSourceFiles *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSourceFile **sourceFile);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSourceFiles *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSourceFile **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSourceFiles *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSourceFiles *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumSourceFiles *This,
                                      /* [out] */ IDiaEnumSourceFiles **ppenum);

    END_INTERFACE
  } IDiaEnumSourceFilesVtbl;

  interface IDiaEnumSourceFiles
  {
    CONST_VTBL struct IDiaEnumSourceFilesVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSourceFiles_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSourceFiles_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSourceFiles_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSourceFiles_get__NewEnum(This, pRetVal)                        \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumSourceFiles_get_Count(This, pRetVal)                           \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumSourceFiles_Item(This, index, sourceFile)                      \
  ((This)->lpVtbl->Item(This, index, sourceFile))

#define IDiaEnumSourceFiles_Next(This, celt, rgelt, pceltFetched)              \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSourceFiles_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumSourceFiles_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSourceFiles_Clone(This, ppenum)                                \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSourceFiles_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__
#define __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__

  /* interface IDiaEnumInputAssemblyFiles */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumInputAssemblyFiles;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("1C7FF653-51F7-457E-8419-B20F57EF7E4D")
  IDiaEnumInputAssemblyFiles : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaInputAssemblyFile * *file) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaInputAssemblyFile * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumInputAssemblyFiles * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumInputAssemblyFilesVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumInputAssemblyFiles *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumInputAssemblyFiles *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumInputAssemblyFiles *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumInputAssemblyFiles *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumInputAssemblyFiles *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumInputAssemblyFiles *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaInputAssemblyFile **file);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumInputAssemblyFiles *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaInputAssemblyFile **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumInputAssemblyFiles *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumInputAssemblyFiles *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumInputAssemblyFiles *This,
        /* [out] */ IDiaEnumInputAssemblyFiles **ppenum);

    END_INTERFACE
  } IDiaEnumInputAssemblyFilesVtbl;

  interface IDiaEnumInputAssemblyFiles
  {
    CONST_VTBL struct IDiaEnumInputAssemblyFilesVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumInputAssemblyFiles_QueryInterface(This, riid, ppvObject)       \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumInputAssemblyFiles_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumInputAssemblyFiles_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumInputAssemblyFiles_get__NewEnum(This, pRetVal)                 \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumInputAssemblyFiles_get_Count(This, pRetVal)                    \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumInputAssemblyFiles_Item(This, index, file)                     \
  ((This)->lpVtbl->Item(This, index, file))

#define IDiaEnumInputAssemblyFiles_Next(This, celt, rgelt, pceltFetched)       \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumInputAssemblyFiles_Skip(This, celt)                            \
  ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumInputAssemblyFiles_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumInputAssemblyFiles_Clone(This, ppenum)                         \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumLineNumbers_INTERFACE_DEFINED__
#define __IDiaEnumLineNumbers_INTERFACE_DEFINED__

  /* interface IDiaEnumLineNumbers */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumLineNumbers;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("FE30E878-54AC-44f1-81BA-39DE940F6052")
  IDiaEnumLineNumbers : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaLineNumber * *lineNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaLineNumber * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumLineNumbers * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumLineNumbersVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumLineNumbers *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumLineNumbers *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumLineNumbers *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumLineNumbers *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumLineNumbers *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumLineNumbers *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaLineNumber **lineNumber);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumLineNumbers *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaLineNumber **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumLineNumbers *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumLineNumbers *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumLineNumbers *This,
                                      /* [out] */ IDiaEnumLineNumbers **ppenum);

    END_INTERFACE
  } IDiaEnumLineNumbersVtbl;

  interface IDiaEnumLineNumbers
  {
    CONST_VTBL struct IDiaEnumLineNumbersVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumLineNumbers_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumLineNumbers_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumLineNumbers_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumLineNumbers_get__NewEnum(This, pRetVal)                        \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumLineNumbers_get_Count(This, pRetVal)                           \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumLineNumbers_Item(This, index, lineNumber)                      \
  ((This)->lpVtbl->Item(This, index, lineNumber))

#define IDiaEnumLineNumbers_Next(This, celt, rgelt, pceltFetched)              \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumLineNumbers_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumLineNumbers_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumLineNumbers_Clone(This, ppenum)                                \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumLineNumbers_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumInjectedSources_INTERFACE_DEFINED__
#define __IDiaEnumInjectedSources_INTERFACE_DEFINED__

  /* interface IDiaEnumInjectedSources */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumInjectedSources;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("D5612573-6925-4468-8883-98CDEC8C384A")
  IDiaEnumInjectedSources : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaInjectedSource * *injectedSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaInjectedSource * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumInjectedSources * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumInjectedSourcesVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumInjectedSources *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumInjectedSources *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumInjectedSources *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumInjectedSources *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumInjectedSources *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumInjectedSources *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaInjectedSource **injectedSource);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumInjectedSources *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaInjectedSource **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumInjectedSources *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumInjectedSources *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumInjectedSources *This,
        /* [out] */ IDiaEnumInjectedSources **ppenum);

    END_INTERFACE
  } IDiaEnumInjectedSourcesVtbl;

  interface IDiaEnumInjectedSources
  {
    CONST_VTBL struct IDiaEnumInjectedSourcesVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumInjectedSources_QueryInterface(This, riid, ppvObject)          \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumInjectedSources_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumInjectedSources_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumInjectedSources_get__NewEnum(This, pRetVal)                    \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumInjectedSources_get_Count(This, pRetVal)                       \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumInjectedSources_Item(This, index, injectedSource)              \
  ((This)->lpVtbl->Item(This, index, injectedSource))

#define IDiaEnumInjectedSources_Next(This, celt, rgelt, pceltFetched)          \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumInjectedSources_Skip(This, celt)                               \
  ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumInjectedSources_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumInjectedSources_Clone(This, ppenum)                            \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumInjectedSources_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSegments_INTERFACE_DEFINED__
#define __IDiaEnumSegments_INTERFACE_DEFINED__

  /* interface IDiaEnumSegments */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSegments;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("E8368CA9-01D1-419d-AC0C-E31235DBDA9F")
  IDiaEnumSegments : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSegment * *segment) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSegment * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSegments * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSegmentsVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSegments *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSegments *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSegments *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumSegments *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumSegments *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumSegments *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSegment **segment);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSegments *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSegment **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSegments *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSegments *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumSegments *This,
                                      /* [out] */ IDiaEnumSegments **ppenum);

    END_INTERFACE
  } IDiaEnumSegmentsVtbl;

  interface IDiaEnumSegments
  {
    CONST_VTBL struct IDiaEnumSegmentsVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSegments_QueryInterface(This, riid, ppvObject)                 \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSegments_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSegments_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSegments_get__NewEnum(This, pRetVal)                           \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumSegments_get_Count(This, pRetVal)                              \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumSegments_Item(This, index, segment)                            \
  ((This)->lpVtbl->Item(This, index, segment))

#define IDiaEnumSegments_Next(This, celt, rgelt, pceltFetched)                 \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSegments_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumSegments_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSegments_Clone(This, ppenum)                                   \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSegments_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSectionContribs_INTERFACE_DEFINED__
#define __IDiaEnumSectionContribs_INTERFACE_DEFINED__

  /* interface IDiaEnumSectionContribs */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSectionContribs;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("1994DEB2-2C82-4b1d-A57F-AFF424D54A68")
  IDiaEnumSectionContribs : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSectionContrib * *section) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaSectionContrib * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSectionContribs * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSectionContribsVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSectionContribs *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSectionContribs *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSectionContribs *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumSectionContribs *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumSectionContribs *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumSectionContribs *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaSectionContrib **section);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSectionContribs *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaSectionContrib **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSectionContribs *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSectionContribs *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumSectionContribs *This,
        /* [out] */ IDiaEnumSectionContribs **ppenum);

    END_INTERFACE
  } IDiaEnumSectionContribsVtbl;

  interface IDiaEnumSectionContribs
  {
    CONST_VTBL struct IDiaEnumSectionContribsVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSectionContribs_QueryInterface(This, riid, ppvObject)          \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSectionContribs_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSectionContribs_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSectionContribs_get__NewEnum(This, pRetVal)                    \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumSectionContribs_get_Count(This, pRetVal)                       \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumSectionContribs_Item(This, index, section)                     \
  ((This)->lpVtbl->Item(This, index, section))

#define IDiaEnumSectionContribs_Next(This, celt, rgelt, pceltFetched)          \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumSectionContribs_Skip(This, celt)                               \
  ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumSectionContribs_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSectionContribs_Clone(This, ppenum)                            \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSectionContribs_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumFrameData_INTERFACE_DEFINED__
#define __IDiaEnumFrameData_INTERFACE_DEFINED__

  /* interface IDiaEnumFrameData */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumFrameData;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("9FC77A4B-3C1C-44ed-A798-6C1DEEA53E1F")
  IDiaEnumFrameData : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaFrameData * *frame) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaFrameData * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumFrameData * *ppenum) = 0;

    virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE frameByRVA(
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaFrameData * *frame) = 0;

    virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE frameByVA(
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaFrameData * *frame) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumFrameDataVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumFrameData *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumFrameData *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumFrameData *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumFrameData *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumFrameData *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumFrameData *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IDiaFrameData **frame);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumFrameData *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaFrameData **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumFrameData *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumFrameData *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumFrameData *This,
                                      /* [out] */ IDiaEnumFrameData **ppenum);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *frameByRVA)(
        IDiaEnumFrameData *This,
        /* [in] */ DWORD relativeVirtualAddress,
        /* [retval][out] */ IDiaFrameData **frame);

    /* [helpstring] */ HRESULT(STDMETHODCALLTYPE *frameByVA)(
        IDiaEnumFrameData *This,
        /* [in] */ ULONGLONG virtualAddress,
        /* [retval][out] */ IDiaFrameData **frame);

    END_INTERFACE
  } IDiaEnumFrameDataVtbl;

  interface IDiaEnumFrameData
  {
    CONST_VTBL struct IDiaEnumFrameDataVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumFrameData_QueryInterface(This, riid, ppvObject)                \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumFrameData_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumFrameData_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumFrameData_get__NewEnum(This, pRetVal)                          \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumFrameData_get_Count(This, pRetVal)                             \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumFrameData_Item(This, index, frame)                             \
  ((This)->lpVtbl->Item(This, index, frame))

#define IDiaEnumFrameData_Next(This, celt, rgelt, pceltFetched)                \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumFrameData_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumFrameData_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumFrameData_Clone(This, ppenum)                                  \
  ((This)->lpVtbl->Clone(This, ppenum))

#define IDiaEnumFrameData_frameByRVA(This, relativeVirtualAddress, frame)      \
  ((This)->lpVtbl->frameByRVA(This, relativeVirtualAddress, frame))

#define IDiaEnumFrameData_frameByVA(This, virtualAddress, frame)               \
  ((This)->lpVtbl->frameByVA(This, virtualAddress, frame))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumFrameData_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumDebugStreamData_INTERFACE_DEFINED__
#define __IDiaEnumDebugStreamData_INTERFACE_DEFINED__

  /* interface IDiaEnumDebugStreamData */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumDebugStreamData;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("486943E8-D187-4a6b-A3C4-291259FFF60D")
  IDiaEnumDebugStreamData : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name(
        /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumDebugStreamData * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumDebugStreamDataVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumDebugStreamData *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumDebugStreamData *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumDebugStreamData *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumDebugStreamData *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumDebugStreamData *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaEnumDebugStreamData *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumDebugStreamData *This,
        /* [in] */ DWORD index,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumDebugStreamData *This,
                                     /* [in] */ ULONG celt,
                                     /* [in] */ DWORD cbData,
                                     /* [out] */ DWORD *pcbData,
                                     /* [size_is][out] */ BYTE *pbData,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumDebugStreamData *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumDebugStreamData *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumDebugStreamData *This,
        /* [out] */ IDiaEnumDebugStreamData **ppenum);

    END_INTERFACE
  } IDiaEnumDebugStreamDataVtbl;

  interface IDiaEnumDebugStreamData
  {
    CONST_VTBL struct IDiaEnumDebugStreamDataVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumDebugStreamData_QueryInterface(This, riid, ppvObject)          \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumDebugStreamData_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumDebugStreamData_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumDebugStreamData_get__NewEnum(This, pRetVal)                    \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumDebugStreamData_get_Count(This, pRetVal)                       \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumDebugStreamData_get_name(This, pRetVal)                        \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaEnumDebugStreamData_Item(This, index, cbData, pcbData, pbData)     \
  ((This)->lpVtbl->Item(This, index, cbData, pcbData, pbData))

#define IDiaEnumDebugStreamData_Next(This, celt, cbData, pcbData, pbData,      \
                                     pceltFetched)                             \
  ((This)->lpVtbl->Next(This, celt, cbData, pcbData, pbData, pceltFetched))

#define IDiaEnumDebugStreamData_Skip(This, celt)                               \
  ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumDebugStreamData_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumDebugStreamData_Clone(This, ppenum)                            \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumDebugStreamData_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumDebugStreams_INTERFACE_DEFINED__
#define __IDiaEnumDebugStreams_INTERFACE_DEFINED__

  /* interface IDiaEnumDebugStreams */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumDebugStreams;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("08CBB41E-47A6-4f87-92F1-1C9C87CED044")
  IDiaEnumDebugStreams : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ VARIANT index,
        /* [retval][out] */ IDiaEnumDebugStreamData * *stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaEnumDebugStreamData * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumDebugStreams * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumDebugStreamsVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumDebugStreams *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumDebugStreams *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumDebugStreams *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumDebugStreams *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumDebugStreams *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumDebugStreams *This,
        /* [in] */ VARIANT index,
        /* [retval][out] */ IDiaEnumDebugStreamData **stream);

    HRESULT(STDMETHODCALLTYPE *Next)(
        IDiaEnumDebugStreams *This,
        /* [in] */ ULONG celt,
        /* [out] */ IDiaEnumDebugStreamData **rgelt,
        /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumDebugStreams *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumDebugStreams *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumDebugStreams *This,
        /* [out] */ IDiaEnumDebugStreams **ppenum);

    END_INTERFACE
  } IDiaEnumDebugStreamsVtbl;

  interface IDiaEnumDebugStreams
  {
    CONST_VTBL struct IDiaEnumDebugStreamsVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumDebugStreams_QueryInterface(This, riid, ppvObject)             \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumDebugStreams_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumDebugStreams_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumDebugStreams_get__NewEnum(This, pRetVal)                       \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumDebugStreams_get_Count(This, pRetVal)                          \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumDebugStreams_Item(This, index, stream)                         \
  ((This)->lpVtbl->Item(This, index, stream))

#define IDiaEnumDebugStreams_Next(This, celt, rgelt, pceltFetched)             \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumDebugStreams_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumDebugStreams_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumDebugStreams_Clone(This, ppenum)                               \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumDebugStreams_INTERFACE_DEFINED__ */

  /* interface __MIDL_itf_dia2_0000_0019 */
  /* [local] */

  struct DiaAddressMapEntry
  {
    DWORD rva;
    DWORD rvaTo;
  };

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0019_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0019_v0_0_s_ifspec;

#ifndef __IDiaAddressMap_INTERFACE_DEFINED__
#define __IDiaAddressMap_INTERFACE_DEFINED__

  /* interface IDiaAddressMap */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaAddressMap;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("B62A2E7A-067A-4ea3-B598-04C09717502C")
  IDiaAddressMap : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressMapEnabled(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_addressMapEnabled(
        /* [in] */ BOOL NewVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddressEnabled(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_relativeVirtualAddressEnabled(
        /* [in] */ BOOL NewVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_imageAlign(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_imageAlign(
        /* [in] */ DWORD NewVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE set_imageHeaders(
        /* [in] */ DWORD cbData,
        /* [size_is][in] */ BYTE * pbData,
        /* [in] */ BOOL originalHeaders) = 0;

    virtual HRESULT STDMETHODCALLTYPE set_addressMap(
        /* [in] */ DWORD cData,
        /* [size_is][in] */ struct DiaAddressMapEntry * pData,
        /* [in] */ BOOL imageToSymbols) = 0;
  };

#else /* C style interface */

  typedef struct IDiaAddressMapVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaAddressMap *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaAddressMap *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaAddressMap *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressMapEnabled)(
        IDiaAddressMap *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(
        STDMETHODCALLTYPE *put_addressMapEnabled)(IDiaAddressMap *This,
                                                  /* [in] */ BOOL NewVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddressEnabled)(
        IDiaAddressMap *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(
        STDMETHODCALLTYPE *put_relativeVirtualAddressEnabled)(
        IDiaAddressMap *This,
        /* [in] */ BOOL NewVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_imageAlign)(
        IDiaAddressMap *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(STDMETHODCALLTYPE *put_imageAlign)(
        IDiaAddressMap *This,
        /* [in] */ DWORD NewVal);

    HRESULT(STDMETHODCALLTYPE *set_imageHeaders)(
        IDiaAddressMap *This,
        /* [in] */ DWORD cbData,
        /* [size_is][in] */ BYTE *pbData,
        /* [in] */ BOOL originalHeaders);

    HRESULT(STDMETHODCALLTYPE *set_addressMap)(
        IDiaAddressMap *This,
        /* [in] */ DWORD cData,
        /* [size_is][in] */ struct DiaAddressMapEntry *pData,
        /* [in] */ BOOL imageToSymbols);

    END_INTERFACE
  } IDiaAddressMapVtbl;

  interface IDiaAddressMap { CONST_VTBL struct IDiaAddressMapVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaAddressMap_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaAddressMap_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaAddressMap_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaAddressMap_get_addressMapEnabled(This, pRetVal)                    \
  ((This)->lpVtbl->get_addressMapEnabled(This, pRetVal))

#define IDiaAddressMap_put_addressMapEnabled(This, NewVal)                     \
  ((This)->lpVtbl->put_addressMapEnabled(This, NewVal))

#define IDiaAddressMap_get_relativeVirtualAddressEnabled(This, pRetVal)        \
  ((This)->lpVtbl->get_relativeVirtualAddressEnabled(This, pRetVal))

#define IDiaAddressMap_put_relativeVirtualAddressEnabled(This, NewVal)         \
  ((This)->lpVtbl->put_relativeVirtualAddressEnabled(This, NewVal))

#define IDiaAddressMap_get_imageAlign(This, pRetVal)                           \
  ((This)->lpVtbl->get_imageAlign(This, pRetVal))

#define IDiaAddressMap_put_imageAlign(This, NewVal)                            \
  ((This)->lpVtbl->put_imageAlign(This, NewVal))

#define IDiaAddressMap_set_imageHeaders(This, cbData, pbData, originalHeaders) \
  ((This)->lpVtbl->set_imageHeaders(This, cbData, pbData, originalHeaders))

#define IDiaAddressMap_set_addressMap(This, cData, pData, imageToSymbols)      \
  ((This)->lpVtbl->set_addressMap(This, cData, pData, imageToSymbols))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaAddressMap_INTERFACE_DEFINED__ */

#ifndef __IDiaSession_INTERFACE_DEFINED__
#define __IDiaSession_INTERFACE_DEFINED__

  /* interface IDiaSession */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSession;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("2F609EE1-D1C8-4E24-8288-3326BADCD211")
  IDiaSession : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_loadAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_loadAddress(
        /* [in] */ ULONGLONG NewVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_globalScope(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE getEnumTables(
        /* [out] */ IDiaEnumTables * *ppEnumTables) = 0;

    virtual HRESULT STDMETHODCALLTYPE getSymbolsByAddr(
        /* [out] */ IDiaEnumSymbolsByAddr * *ppEnumbyAddr) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildren(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenEx(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByAddr(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByRVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByAddr(
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByRVA(
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByVA(
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByToken(
        /* [in] */ ULONG token,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE symsAreEquiv(
        /* [in] */ IDiaSymbol * symbolA,
        /* [in] */ IDiaSymbol * symbolB) = 0;

    virtual HRESULT STDMETHODCALLTYPE symbolById(
        /* [in] */ DWORD id,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByRVAEx(
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol,
        /* [out] */ long *displacement) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolByVAEx(
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol * *ppSymbol,
        /* [out] */ long *displacement) = 0;

    virtual HRESULT STDMETHODCALLTYPE findFile(
        /* [in] */ IDiaSymbol * pCompiland,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSourceFiles * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findFileById(
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaSourceFile * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findLines(
        /* [in] */ IDiaSymbol * compiland,
        /* [in] */ IDiaSourceFile * file,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findLinesByAddr(
        /* [in] */ DWORD seg,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findLinesByRVA(
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findLinesByVA(
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findLinesByLinenum(
        /* [in] */ IDiaSymbol * compiland,
        /* [in] */ IDiaSourceFile * file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInjectedSource(
        /* [in] */ LPCOLESTR srcFile,
        /* [out] */ IDiaEnumInjectedSources * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE getEnumDebugStreams(
        /* [out] */ IDiaEnumDebugStreams * *ppEnumDebugStreams) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByAddr(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByRVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLines(
        /* [in] */ IDiaSymbol * parent,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByAddr(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByRVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByVA(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByLinenum(
        /* [in] */ IDiaSymbol * compiland,
        /* [in] */ IDiaSourceFile * file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineesByName(
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findAcceleratorInlineeLinesByLinenum(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ IDiaSourceFile * file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolsForAcceleratorPointerTag(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolsByRVAForAcceleratorPointerTag(
        /* [in] */ IDiaSymbol * parent,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findAcceleratorInlineesByName(
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE addressForVA(
        /* [in] */ ULONGLONG va,
        /* [out] */ DWORD * pISect,
        /* [out] */ DWORD * pOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE addressForRVA(
        /* [in] */ DWORD rva,
        /* [out] */ DWORD * pISect,
        /* [out] */ DWORD * pOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE findILOffsetsByAddr(
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findILOffsetsByRVA(
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findILOffsetsByVA(
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFiles(
        /* [out] */ IDiaEnumInputAssemblyFiles * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInputAssembly(
        /* [in] */ DWORD index,
        /* [out] */ IDiaInputAssemblyFile * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInputAssemblyById(
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaInputAssemblyFile * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE getFuncMDTokenMapSize(
        /* [out] */ DWORD * pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE getFuncMDTokenMap(
        /* [in] */ DWORD cb,
        /* [out] */ DWORD * pcb,
        /* [size_is][out] */ BYTE * pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE getTypeMDTokenMapSize(
        /* [out] */ DWORD * pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE getTypeMDTokenMap(
        /* [in] */ DWORD cb,
        /* [out] */ DWORD * pcb,
        /* [size_is][out] */ BYTE * pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_VA(
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD * pNumFragments) = 0;

    virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_RVA(
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD * pNumFragments) = 0;

    virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_VA(
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ ULONGLONG * pVaFragment,
        /* [size_is][out] */ DWORD * pLenFragment) = 0;

    virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_RVA(
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ DWORD * pRvaFragment,
        /* [size_is][out] */ DWORD * pLenFragment) = 0;

    virtual HRESULT STDMETHODCALLTYPE getExports(
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE getHeapAllocationSites(
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile(
        /* [in] */ IDiaSymbol * pSymbol,
        /* [out] */ IDiaInputAssemblyFile * *ppResult) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSessionVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSession *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSession *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSession *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_loadAddress)(
        IDiaSession *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(STDMETHODCALLTYPE *put_loadAddress)(
        IDiaSession *This,
        /* [in] */ ULONGLONG NewVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_globalScope)(
        IDiaSession *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    HRESULT(STDMETHODCALLTYPE *getEnumTables)(
        IDiaSession *This,
        /* [out] */ IDiaEnumTables **ppEnumTables);

    HRESULT(STDMETHODCALLTYPE *getSymbolsByAddr)(
        IDiaSession *This,
        /* [out] */ IDiaEnumSymbolsByAddr **ppEnumbyAddr);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolByAddr)(
        IDiaSession *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByRVA)(
        IDiaSession *This,
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByVA)(
        IDiaSession *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByToken)(
        IDiaSession *This,
        /* [in] */ ULONG token,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *symsAreEquiv)(IDiaSession *This,
                                             /* [in] */ IDiaSymbol *symbolA,
                                             /* [in] */ IDiaSymbol *symbolB);

    HRESULT(STDMETHODCALLTYPE *symbolById)(IDiaSession *This,
                                           /* [in] */ DWORD id,
                                           /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByRVAEx)(
        IDiaSession *This,
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol,
        /* [out] */ long *displacement);

    HRESULT(STDMETHODCALLTYPE *findSymbolByVAEx)(
        IDiaSession *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol,
        /* [out] */ long *displacement);

    HRESULT(STDMETHODCALLTYPE *findFile)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *pCompiland,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSourceFiles **ppResult);

    HRESULT(STDMETHODCALLTYPE *findFileById)(
        IDiaSession *This,
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaSourceFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLines)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByAddr)(
        IDiaSession *This,
        /* [in] */ DWORD seg,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByRVA)(
        IDiaSession *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByVA)(
        IDiaSession *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByLinenum)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInjectedSource)(
        IDiaSession *This,
        /* [in] */ LPCOLESTR srcFile,
        /* [out] */ IDiaEnumInjectedSources **ppResult);

    HRESULT(STDMETHODCALLTYPE *getEnumDebugStreams)(
        IDiaSession *This,
        /* [out] */ IDiaEnumDebugStreams **ppEnumDebugStreams);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByLinenum)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineesByName)(
        IDiaSession *This,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findAcceleratorInlineeLinesByLinenum)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findAcceleratorInlineesByName)(
        IDiaSession *This,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *addressForVA)(IDiaSession *This,
                                             /* [in] */ ULONGLONG va,
                                             /* [out] */ DWORD *pISect,
                                             /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *addressForRVA)(IDiaSession *This,
                                              /* [in] */ DWORD rva,
                                              /* [out] */ DWORD *pISect,
                                              /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByAddr)(
        IDiaSession *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByRVA)(
        IDiaSession *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByVA)(
        IDiaSession *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFiles)(
        IDiaSession *This,
        /* [out] */ IDiaEnumInputAssemblyFiles **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssembly)(
        IDiaSession *This,
        /* [in] */ DWORD index,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyById)(
        IDiaSession *This,
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *getFuncMDTokenMapSize)(IDiaSession *This,
                                                      /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *getFuncMDTokenMap)(
        IDiaSession *This,
        /* [in] */ DWORD cb,
        /* [out] */ DWORD *pcb,
        /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *getTypeMDTokenMapSize)(IDiaSession *This,
                                                      /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *getTypeMDTokenMap)(
        IDiaSession *This,
        /* [in] */ DWORD cb,
        /* [out] */ DWORD *pcb,
        /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *getNumberOfFunctionFragments_VA)(
        IDiaSession *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *getNumberOfFunctionFragments_RVA)(
        IDiaSession *This,
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *getFunctionFragments_VA)(
        IDiaSession *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ ULONGLONG *pVaFragment,
        /* [size_is][out] */ DWORD *pLenFragment);

    HRESULT(STDMETHODCALLTYPE *getFunctionFragments_RVA)(
        IDiaSession *This,
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ DWORD *pRvaFragment,
        /* [size_is][out] */ DWORD *pLenFragment);

    HRESULT(STDMETHODCALLTYPE *getExports)(
        IDiaSession *This,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *getHeapAllocationSites)(
        IDiaSession *This,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSession *This,
        /* [in] */ IDiaSymbol *pSymbol,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    END_INTERFACE
  } IDiaSessionVtbl;

  interface IDiaSession { CONST_VTBL struct IDiaSessionVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSession_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSession_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSession_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSession_get_loadAddress(This, pRetVal)                             \
  ((This)->lpVtbl->get_loadAddress(This, pRetVal))

#define IDiaSession_put_loadAddress(This, NewVal)                              \
  ((This)->lpVtbl->put_loadAddress(This, NewVal))

#define IDiaSession_get_globalScope(This, pRetVal)                             \
  ((This)->lpVtbl->get_globalScope(This, pRetVal))

#define IDiaSession_getEnumTables(This, ppEnumTables)                          \
  ((This)->lpVtbl->getEnumTables(This, ppEnumTables))

#define IDiaSession_getSymbolsByAddr(This, ppEnumbyAddr)                       \
  ((This)->lpVtbl->getSymbolsByAddr(This, ppEnumbyAddr))

#define IDiaSession_findChildren(This, parent, symtag, name, compareFlags,     \
                                 ppResult)                                     \
  ((This)->lpVtbl->findChildren(This, parent, symtag, name, compareFlags,      \
                                ppResult))

#define IDiaSession_findChildrenEx(This, parent, symtag, name, compareFlags,   \
                                   ppResult)                                   \
  ((This)->lpVtbl->findChildrenEx(This, parent, symtag, name, compareFlags,    \
                                  ppResult))

#define IDiaSession_findChildrenExByAddr(                                      \
    This, parent, symtag, name, compareFlags, isect, offset, ppResult)         \
  ((This)->lpVtbl->findChildrenExByAddr(                                       \
      This, parent, symtag, name, compareFlags, isect, offset, ppResult))

#define IDiaSession_findChildrenExByVA(This, parent, symtag, name,             \
                                       compareFlags, va, ppResult)             \
  ((This)->lpVtbl->findChildrenExByVA(This, parent, symtag, name,              \
                                      compareFlags, va, ppResult))

#define IDiaSession_findChildrenExByRVA(This, parent, symtag, name,            \
                                        compareFlags, rva, ppResult)           \
  ((This)->lpVtbl->findChildrenExByRVA(This, parent, symtag, name,             \
                                       compareFlags, rva, ppResult))

#define IDiaSession_findSymbolByAddr(This, isect, offset, symtag, ppSymbol)    \
  ((This)->lpVtbl->findSymbolByAddr(This, isect, offset, symtag, ppSymbol))

#define IDiaSession_findSymbolByRVA(This, rva, symtag, ppSymbol)               \
  ((This)->lpVtbl->findSymbolByRVA(This, rva, symtag, ppSymbol))

#define IDiaSession_findSymbolByVA(This, va, symtag, ppSymbol)                 \
  ((This)->lpVtbl->findSymbolByVA(This, va, symtag, ppSymbol))

#define IDiaSession_findSymbolByToken(This, token, symtag, ppSymbol)           \
  ((This)->lpVtbl->findSymbolByToken(This, token, symtag, ppSymbol))

#define IDiaSession_symsAreEquiv(This, symbolA, symbolB)                       \
  ((This)->lpVtbl->symsAreEquiv(This, symbolA, symbolB))

#define IDiaSession_symbolById(This, id, ppSymbol)                             \
  ((This)->lpVtbl->symbolById(This, id, ppSymbol))

#define IDiaSession_findSymbolByRVAEx(This, rva, symtag, ppSymbol,             \
                                      displacement)                            \
  ((This)->lpVtbl->findSymbolByRVAEx(This, rva, symtag, ppSymbol, displacement))

#define IDiaSession_findSymbolByVAEx(This, va, symtag, ppSymbol, displacement) \
  ((This)->lpVtbl->findSymbolByVAEx(This, va, symtag, ppSymbol, displacement))

#define IDiaSession_findFile(This, pCompiland, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findFile(This, pCompiland, name, compareFlags, ppResult))

#define IDiaSession_findFileById(This, uniqueId, ppResult)                     \
  ((This)->lpVtbl->findFileById(This, uniqueId, ppResult))

#define IDiaSession_findLines(This, compiland, file, ppResult)                 \
  ((This)->lpVtbl->findLines(This, compiland, file, ppResult))

#define IDiaSession_findLinesByAddr(This, seg, offset, length, ppResult)       \
  ((This)->lpVtbl->findLinesByAddr(This, seg, offset, length, ppResult))

#define IDiaSession_findLinesByRVA(This, rva, length, ppResult)                \
  ((This)->lpVtbl->findLinesByRVA(This, rva, length, ppResult))

#define IDiaSession_findLinesByVA(This, va, length, ppResult)                  \
  ((This)->lpVtbl->findLinesByVA(This, va, length, ppResult))

#define IDiaSession_findLinesByLinenum(This, compiland, file, linenum, column, \
                                       ppResult)                               \
  ((This)->lpVtbl->findLinesByLinenum(This, compiland, file, linenum, column,  \
                                      ppResult))

#define IDiaSession_findInjectedSource(This, srcFile, ppResult)                \
  ((This)->lpVtbl->findInjectedSource(This, srcFile, ppResult))

#define IDiaSession_getEnumDebugStreams(This, ppEnumDebugStreams)              \
  ((This)->lpVtbl->getEnumDebugStreams(This, ppEnumDebugStreams))

#define IDiaSession_findInlineFramesByAddr(This, parent, isect, offset,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineFramesByAddr(This, parent, isect, offset,         \
                                          ppResult))

#define IDiaSession_findInlineFramesByRVA(This, parent, rva, ppResult)         \
  ((This)->lpVtbl->findInlineFramesByRVA(This, parent, rva, ppResult))

#define IDiaSession_findInlineFramesByVA(This, parent, va, ppResult)           \
  ((This)->lpVtbl->findInlineFramesByVA(This, parent, va, ppResult))

#define IDiaSession_findInlineeLines(This, parent, ppResult)                   \
  ((This)->lpVtbl->findInlineeLines(This, parent, ppResult))

#define IDiaSession_findInlineeLinesByAddr(This, parent, isect, offset,        \
                                           length, ppResult)                   \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, parent, isect, offset, length, \
                                          ppResult))

#define IDiaSession_findInlineeLinesByRVA(This, parent, rva, length, ppResult) \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, parent, rva, length, ppResult))

#define IDiaSession_findInlineeLinesByVA(This, parent, va, length, ppResult)   \
  ((This)->lpVtbl->findInlineeLinesByVA(This, parent, va, length, ppResult))

#define IDiaSession_findInlineeLinesByLinenum(This, compiland, file, linenum,  \
                                              column, ppResult)                \
  ((This)->lpVtbl->findInlineeLinesByLinenum(This, compiland, file, linenum,   \
                                             column, ppResult))

#define IDiaSession_findInlineesByName(This, name, option, ppResult)           \
  ((This)->lpVtbl->findInlineesByName(This, name, option, ppResult))

#define IDiaSession_findAcceleratorInlineeLinesByLinenum(                      \
    This, parent, file, linenum, column, ppResult)                             \
  ((This)->lpVtbl->findAcceleratorInlineeLinesByLinenum(                       \
      This, parent, file, linenum, column, ppResult))

#define IDiaSession_findSymbolsForAcceleratorPointerTag(This, parent,          \
                                                        tagValue, ppResult)    \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, parent, tagValue, \
                                                       ppResult))

#define IDiaSession_findSymbolsByRVAForAcceleratorPointerTag(                  \
    This, parent, tagValue, rva, ppResult)                                     \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(                   \
      This, parent, tagValue, rva, ppResult))

#define IDiaSession_findAcceleratorInlineesByName(This, name, option,          \
                                                  ppResult)                    \
  ((This)->lpVtbl->findAcceleratorInlineesByName(This, name, option, ppResult))

#define IDiaSession_addressForVA(This, va, pISect, pOffset)                    \
  ((This)->lpVtbl->addressForVA(This, va, pISect, pOffset))

#define IDiaSession_addressForRVA(This, rva, pISect, pOffset)                  \
  ((This)->lpVtbl->addressForRVA(This, rva, pISect, pOffset))

#define IDiaSession_findILOffsetsByAddr(This, isect, offset, length, ppResult) \
  ((This)->lpVtbl->findILOffsetsByAddr(This, isect, offset, length, ppResult))

#define IDiaSession_findILOffsetsByRVA(This, rva, length, ppResult)            \
  ((This)->lpVtbl->findILOffsetsByRVA(This, rva, length, ppResult))

#define IDiaSession_findILOffsetsByVA(This, va, length, ppResult)              \
  ((This)->lpVtbl->findILOffsetsByVA(This, va, length, ppResult))

#define IDiaSession_findInputAssemblyFiles(This, ppResult)                     \
  ((This)->lpVtbl->findInputAssemblyFiles(This, ppResult))

#define IDiaSession_findInputAssembly(This, index, ppResult)                   \
  ((This)->lpVtbl->findInputAssembly(This, index, ppResult))

#define IDiaSession_findInputAssemblyById(This, uniqueId, ppResult)            \
  ((This)->lpVtbl->findInputAssemblyById(This, uniqueId, ppResult))

#define IDiaSession_getFuncMDTokenMapSize(This, pcb)                           \
  ((This)->lpVtbl->getFuncMDTokenMapSize(This, pcb))

#define IDiaSession_getFuncMDTokenMap(This, cb, pcb, pb)                       \
  ((This)->lpVtbl->getFuncMDTokenMap(This, cb, pcb, pb))

#define IDiaSession_getTypeMDTokenMapSize(This, pcb)                           \
  ((This)->lpVtbl->getTypeMDTokenMapSize(This, pcb))

#define IDiaSession_getTypeMDTokenMap(This, cb, pcb, pb)                       \
  ((This)->lpVtbl->getTypeMDTokenMap(This, cb, pcb, pb))

#define IDiaSession_getNumberOfFunctionFragments_VA(This, vaFunc, cbFunc,      \
                                                    pNumFragments)             \
  ((This)->lpVtbl->getNumberOfFunctionFragments_VA(This, vaFunc, cbFunc,       \
                                                   pNumFragments))

#define IDiaSession_getNumberOfFunctionFragments_RVA(This, rvaFunc, cbFunc,    \
                                                     pNumFragments)            \
  ((This)->lpVtbl->getNumberOfFunctionFragments_RVA(This, rvaFunc, cbFunc,     \
                                                    pNumFragments))

#define IDiaSession_getFunctionFragments_VA(This, vaFunc, cbFunc, cFragments,  \
                                            pVaFragment, pLenFragment)         \
  ((This)->lpVtbl->getFunctionFragments_VA(This, vaFunc, cbFunc, cFragments,   \
                                           pVaFragment, pLenFragment))

#define IDiaSession_getFunctionFragments_RVA(                                  \
    This, rvaFunc, cbFunc, cFragments, pRvaFragment, pLenFragment)             \
  ((This)->lpVtbl->getFunctionFragments_RVA(This, rvaFunc, cbFunc, cFragments, \
                                            pRvaFragment, pLenFragment))

#define IDiaSession_getExports(This, ppResult)                                 \
  ((This)->lpVtbl->getExports(This, ppResult))

#define IDiaSession_getHeapAllocationSites(This, ppResult)                     \
  ((This)->lpVtbl->getHeapAllocationSites(This, ppResult))

#define IDiaSession_findInputAssemblyFile(This, pSymbol, ppResult)             \
  ((This)->lpVtbl->findInputAssemblyFile(This, pSymbol, ppResult))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaSession_INTERFACE_DEFINED__ */

#ifndef __IDiaSessionEx_INTERFACE_DEFINED__
#define __IDiaSessionEx_INTERFACE_DEFINED__

  /* interface IDiaSessionEx */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSessionEx;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("cd24eed5-5fea-4742-a320-6254c920e78b")
  IDiaSessionEx : public IDiaSession
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE isFastLinkPDB(
        /* [out] */ BOOL * pfFastLinkPDB) = 0;

    virtual HRESULT STDMETHODCALLTYPE isPortablePDB(
        /* [out] */ BOOL * pfPortablePDB) = 0;

    virtual HRESULT STDMETHODCALLTYPE getSourceLinkInfo(
        /* [in] */ IDiaSymbol * parent,
        /* [out] */ IDiaEnumSourceLink * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSessionExVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSessionEx *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSessionEx *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSessionEx *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_loadAddress)(
        IDiaSessionEx *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(STDMETHODCALLTYPE *put_loadAddress)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG NewVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_globalScope)(
        IDiaSessionEx *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    HRESULT(STDMETHODCALLTYPE *getEnumTables)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumTables **ppEnumTables);

    HRESULT(STDMETHODCALLTYPE *getSymbolsByAddr)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumSymbolsByAddr **ppEnumbyAddr);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolByAddr)(
        IDiaSessionEx *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByRVA)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByVA)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByToken)(
        IDiaSessionEx *This,
        /* [in] */ ULONG token,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *symsAreEquiv)(IDiaSessionEx *This,
                                             /* [in] */ IDiaSymbol *symbolA,
                                             /* [in] */ IDiaSymbol *symbolB);

    HRESULT(STDMETHODCALLTYPE *symbolById)(IDiaSessionEx *This,
                                           /* [in] */ DWORD id,
                                           /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *findSymbolByRVAEx)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rva,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol,
        /* [out] */ long *displacement);

    HRESULT(STDMETHODCALLTYPE *findSymbolByVAEx)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ enum SymTagEnum symtag,
        /* [out] */ IDiaSymbol **ppSymbol,
        /* [out] */ long *displacement);

    HRESULT(STDMETHODCALLTYPE *findFile)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *pCompiland,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSourceFiles **ppResult);

    HRESULT(STDMETHODCALLTYPE *findFileById)(
        IDiaSessionEx *This,
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaSourceFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLines)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByAddr)(
        IDiaSessionEx *This,
        /* [in] */ DWORD seg,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByRVA)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByVA)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findLinesByLinenum)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInjectedSource)(
        IDiaSessionEx *This,
        /* [in] */ LPCOLESTR srcFile,
        /* [out] */ IDiaEnumInjectedSources **ppResult);

    HRESULT(STDMETHODCALLTYPE *getEnumDebugStreams)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumDebugStreams **ppEnumDebugStreams);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByLinenum)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *compiland,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineesByName)(
        IDiaSessionEx *This,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findAcceleratorInlineeLinesByLinenum)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ IDiaSourceFile *file,
        /* [in] */ DWORD linenum,
        /* [in] */ DWORD column,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findAcceleratorInlineesByName)(
        IDiaSessionEx *This,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD option,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *addressForVA)(IDiaSessionEx *This,
                                             /* [in] */ ULONGLONG va,
                                             /* [out] */ DWORD *pISect,
                                             /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *addressForRVA)(IDiaSessionEx *This,
                                              /* [in] */ DWORD rva,
                                              /* [out] */ DWORD *pISect,
                                              /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByAddr)(
        IDiaSessionEx *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByRVA)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findILOffsetsByVA)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFiles)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumInputAssemblyFiles **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssembly)(
        IDiaSessionEx *This,
        /* [in] */ DWORD index,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyById)(
        IDiaSessionEx *This,
        /* [in] */ DWORD uniqueId,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *getFuncMDTokenMapSize)(IDiaSessionEx *This,
                                                      /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *getFuncMDTokenMap)(
        IDiaSessionEx *This,
        /* [in] */ DWORD cb,
        /* [out] */ DWORD *pcb,
        /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *getTypeMDTokenMapSize)(IDiaSessionEx *This,
                                                      /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *getTypeMDTokenMap)(
        IDiaSessionEx *This,
        /* [in] */ DWORD cb,
        /* [out] */ DWORD *pcb,
        /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *getNumberOfFunctionFragments_VA)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *getNumberOfFunctionFragments_RVA)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *getFunctionFragments_VA)(
        IDiaSessionEx *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ ULONGLONG *pVaFragment,
        /* [size_is][out] */ DWORD *pLenFragment);

    HRESULT(STDMETHODCALLTYPE *getFunctionFragments_RVA)(
        IDiaSessionEx *This,
        /* [in] */ DWORD rvaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [size_is][out] */ DWORD *pRvaFragment,
        /* [size_is][out] */ DWORD *pLenFragment);

    HRESULT(STDMETHODCALLTYPE *getExports)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *getHeapAllocationSites)(
        IDiaSessionEx *This,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *pSymbol,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    HRESULT(STDMETHODCALLTYPE *isFastLinkPDB)(IDiaSessionEx *This,
                                              /* [out] */ BOOL *pfFastLinkPDB);

    HRESULT(STDMETHODCALLTYPE *isPortablePDB)(IDiaSessionEx *This,
                                              /* [out] */ BOOL *pfPortablePDB);

    HRESULT(STDMETHODCALLTYPE *getSourceLinkInfo)(
        IDiaSessionEx *This,
        /* [in] */ IDiaSymbol *parent,
        /* [out] */ IDiaEnumSourceLink **ppenum);

    END_INTERFACE
  } IDiaSessionExVtbl;

  interface IDiaSessionEx { CONST_VTBL struct IDiaSessionExVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSessionEx_QueryInterface(This, riid, ppvObject)                    \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSessionEx_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSessionEx_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSessionEx_get_loadAddress(This, pRetVal)                           \
  ((This)->lpVtbl->get_loadAddress(This, pRetVal))

#define IDiaSessionEx_put_loadAddress(This, NewVal)                            \
  ((This)->lpVtbl->put_loadAddress(This, NewVal))

#define IDiaSessionEx_get_globalScope(This, pRetVal)                           \
  ((This)->lpVtbl->get_globalScope(This, pRetVal))

#define IDiaSessionEx_getEnumTables(This, ppEnumTables)                        \
  ((This)->lpVtbl->getEnumTables(This, ppEnumTables))

#define IDiaSessionEx_getSymbolsByAddr(This, ppEnumbyAddr)                     \
  ((This)->lpVtbl->getSymbolsByAddr(This, ppEnumbyAddr))

#define IDiaSessionEx_findChildren(This, parent, symtag, name, compareFlags,   \
                                   ppResult)                                   \
  ((This)->lpVtbl->findChildren(This, parent, symtag, name, compareFlags,      \
                                ppResult))

#define IDiaSessionEx_findChildrenEx(This, parent, symtag, name, compareFlags, \
                                     ppResult)                                 \
  ((This)->lpVtbl->findChildrenEx(This, parent, symtag, name, compareFlags,    \
                                  ppResult))

#define IDiaSessionEx_findChildrenExByAddr(                                    \
    This, parent, symtag, name, compareFlags, isect, offset, ppResult)         \
  ((This)->lpVtbl->findChildrenExByAddr(                                       \
      This, parent, symtag, name, compareFlags, isect, offset, ppResult))

#define IDiaSessionEx_findChildrenExByVA(This, parent, symtag, name,           \
                                         compareFlags, va, ppResult)           \
  ((This)->lpVtbl->findChildrenExByVA(This, parent, symtag, name,              \
                                      compareFlags, va, ppResult))

#define IDiaSessionEx_findChildrenExByRVA(This, parent, symtag, name,          \
                                          compareFlags, rva, ppResult)         \
  ((This)->lpVtbl->findChildrenExByRVA(This, parent, symtag, name,             \
                                       compareFlags, rva, ppResult))

#define IDiaSessionEx_findSymbolByAddr(This, isect, offset, symtag, ppSymbol)  \
  ((This)->lpVtbl->findSymbolByAddr(This, isect, offset, symtag, ppSymbol))

#define IDiaSessionEx_findSymbolByRVA(This, rva, symtag, ppSymbol)             \
  ((This)->lpVtbl->findSymbolByRVA(This, rva, symtag, ppSymbol))

#define IDiaSessionEx_findSymbolByVA(This, va, symtag, ppSymbol)               \
  ((This)->lpVtbl->findSymbolByVA(This, va, symtag, ppSymbol))

#define IDiaSessionEx_findSymbolByToken(This, token, symtag, ppSymbol)         \
  ((This)->lpVtbl->findSymbolByToken(This, token, symtag, ppSymbol))

#define IDiaSessionEx_symsAreEquiv(This, symbolA, symbolB)                     \
  ((This)->lpVtbl->symsAreEquiv(This, symbolA, symbolB))

#define IDiaSessionEx_symbolById(This, id, ppSymbol)                           \
  ((This)->lpVtbl->symbolById(This, id, ppSymbol))

#define IDiaSessionEx_findSymbolByRVAEx(This, rva, symtag, ppSymbol,           \
                                        displacement)                          \
  ((This)->lpVtbl->findSymbolByRVAEx(This, rva, symtag, ppSymbol, displacement))

#define IDiaSessionEx_findSymbolByVAEx(This, va, symtag, ppSymbol,             \
                                       displacement)                           \
  ((This)->lpVtbl->findSymbolByVAEx(This, va, symtag, ppSymbol, displacement))

#define IDiaSessionEx_findFile(This, pCompiland, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findFile(This, pCompiland, name, compareFlags, ppResult))

#define IDiaSessionEx_findFileById(This, uniqueId, ppResult)                   \
  ((This)->lpVtbl->findFileById(This, uniqueId, ppResult))

#define IDiaSessionEx_findLines(This, compiland, file, ppResult)               \
  ((This)->lpVtbl->findLines(This, compiland, file, ppResult))

#define IDiaSessionEx_findLinesByAddr(This, seg, offset, length, ppResult)     \
  ((This)->lpVtbl->findLinesByAddr(This, seg, offset, length, ppResult))

#define IDiaSessionEx_findLinesByRVA(This, rva, length, ppResult)              \
  ((This)->lpVtbl->findLinesByRVA(This, rva, length, ppResult))

#define IDiaSessionEx_findLinesByVA(This, va, length, ppResult)                \
  ((This)->lpVtbl->findLinesByVA(This, va, length, ppResult))

#define IDiaSessionEx_findLinesByLinenum(This, compiland, file, linenum,       \
                                         column, ppResult)                     \
  ((This)->lpVtbl->findLinesByLinenum(This, compiland, file, linenum, column,  \
                                      ppResult))

#define IDiaSessionEx_findInjectedSource(This, srcFile, ppResult)              \
  ((This)->lpVtbl->findInjectedSource(This, srcFile, ppResult))

#define IDiaSessionEx_getEnumDebugStreams(This, ppEnumDebugStreams)            \
  ((This)->lpVtbl->getEnumDebugStreams(This, ppEnumDebugStreams))

#define IDiaSessionEx_findInlineFramesByAddr(This, parent, isect, offset,      \
                                             ppResult)                         \
  ((This)->lpVtbl->findInlineFramesByAddr(This, parent, isect, offset,         \
                                          ppResult))

#define IDiaSessionEx_findInlineFramesByRVA(This, parent, rva, ppResult)       \
  ((This)->lpVtbl->findInlineFramesByRVA(This, parent, rva, ppResult))

#define IDiaSessionEx_findInlineFramesByVA(This, parent, va, ppResult)         \
  ((This)->lpVtbl->findInlineFramesByVA(This, parent, va, ppResult))

#define IDiaSessionEx_findInlineeLines(This, parent, ppResult)                 \
  ((This)->lpVtbl->findInlineeLines(This, parent, ppResult))

#define IDiaSessionEx_findInlineeLinesByAddr(This, parent, isect, offset,      \
                                             length, ppResult)                 \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, parent, isect, offset, length, \
                                          ppResult))

#define IDiaSessionEx_findInlineeLinesByRVA(This, parent, rva, length,         \
                                            ppResult)                          \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, parent, rva, length, ppResult))

#define IDiaSessionEx_findInlineeLinesByVA(This, parent, va, length, ppResult) \
  ((This)->lpVtbl->findInlineeLinesByVA(This, parent, va, length, ppResult))

#define IDiaSessionEx_findInlineeLinesByLinenum(This, compiland, file,         \
                                                linenum, column, ppResult)     \
  ((This)->lpVtbl->findInlineeLinesByLinenum(This, compiland, file, linenum,   \
                                             column, ppResult))

#define IDiaSessionEx_findInlineesByName(This, name, option, ppResult)         \
  ((This)->lpVtbl->findInlineesByName(This, name, option, ppResult))

#define IDiaSessionEx_findAcceleratorInlineeLinesByLinenum(                    \
    This, parent, file, linenum, column, ppResult)                             \
  ((This)->lpVtbl->findAcceleratorInlineeLinesByLinenum(                       \
      This, parent, file, linenum, column, ppResult))

#define IDiaSessionEx_findSymbolsForAcceleratorPointerTag(This, parent,        \
                                                          tagValue, ppResult)  \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, parent, tagValue, \
                                                       ppResult))

#define IDiaSessionEx_findSymbolsByRVAForAcceleratorPointerTag(                \
    This, parent, tagValue, rva, ppResult)                                     \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(                   \
      This, parent, tagValue, rva, ppResult))

#define IDiaSessionEx_findAcceleratorInlineesByName(This, name, option,        \
                                                    ppResult)                  \
  ((This)->lpVtbl->findAcceleratorInlineesByName(This, name, option, ppResult))

#define IDiaSessionEx_addressForVA(This, va, pISect, pOffset)                  \
  ((This)->lpVtbl->addressForVA(This, va, pISect, pOffset))

#define IDiaSessionEx_addressForRVA(This, rva, pISect, pOffset)                \
  ((This)->lpVtbl->addressForRVA(This, rva, pISect, pOffset))

#define IDiaSessionEx_findILOffsetsByAddr(This, isect, offset, length,         \
                                          ppResult)                            \
  ((This)->lpVtbl->findILOffsetsByAddr(This, isect, offset, length, ppResult))

#define IDiaSessionEx_findILOffsetsByRVA(This, rva, length, ppResult)          \
  ((This)->lpVtbl->findILOffsetsByRVA(This, rva, length, ppResult))

#define IDiaSessionEx_findILOffsetsByVA(This, va, length, ppResult)            \
  ((This)->lpVtbl->findILOffsetsByVA(This, va, length, ppResult))

#define IDiaSessionEx_findInputAssemblyFiles(This, ppResult)                   \
  ((This)->lpVtbl->findInputAssemblyFiles(This, ppResult))

#define IDiaSessionEx_findInputAssembly(This, index, ppResult)                 \
  ((This)->lpVtbl->findInputAssembly(This, index, ppResult))

#define IDiaSessionEx_findInputAssemblyById(This, uniqueId, ppResult)          \
  ((This)->lpVtbl->findInputAssemblyById(This, uniqueId, ppResult))

#define IDiaSessionEx_getFuncMDTokenMapSize(This, pcb)                         \
  ((This)->lpVtbl->getFuncMDTokenMapSize(This, pcb))

#define IDiaSessionEx_getFuncMDTokenMap(This, cb, pcb, pb)                     \
  ((This)->lpVtbl->getFuncMDTokenMap(This, cb, pcb, pb))

#define IDiaSessionEx_getTypeMDTokenMapSize(This, pcb)                         \
  ((This)->lpVtbl->getTypeMDTokenMapSize(This, pcb))

#define IDiaSessionEx_getTypeMDTokenMap(This, cb, pcb, pb)                     \
  ((This)->lpVtbl->getTypeMDTokenMap(This, cb, pcb, pb))

#define IDiaSessionEx_getNumberOfFunctionFragments_VA(This, vaFunc, cbFunc,    \
                                                      pNumFragments)           \
  ((This)->lpVtbl->getNumberOfFunctionFragments_VA(This, vaFunc, cbFunc,       \
                                                   pNumFragments))

#define IDiaSessionEx_getNumberOfFunctionFragments_RVA(This, rvaFunc, cbFunc,  \
                                                       pNumFragments)          \
  ((This)->lpVtbl->getNumberOfFunctionFragments_RVA(This, rvaFunc, cbFunc,     \
                                                    pNumFragments))

#define IDiaSessionEx_getFunctionFragments_VA(                                 \
    This, vaFunc, cbFunc, cFragments, pVaFragment, pLenFragment)               \
  ((This)->lpVtbl->getFunctionFragments_VA(This, vaFunc, cbFunc, cFragments,   \
                                           pVaFragment, pLenFragment))

#define IDiaSessionEx_getFunctionFragments_RVA(                                \
    This, rvaFunc, cbFunc, cFragments, pRvaFragment, pLenFragment)             \
  ((This)->lpVtbl->getFunctionFragments_RVA(This, rvaFunc, cbFunc, cFragments, \
                                            pRvaFragment, pLenFragment))

#define IDiaSessionEx_getExports(This, ppResult)                               \
  ((This)->lpVtbl->getExports(This, ppResult))

#define IDiaSessionEx_getHeapAllocationSites(This, ppResult)                   \
  ((This)->lpVtbl->getHeapAllocationSites(This, ppResult))

#define IDiaSessionEx_findInputAssemblyFile(This, pSymbol, ppResult)           \
  ((This)->lpVtbl->findInputAssemblyFile(This, pSymbol, ppResult))

#define IDiaSessionEx_isFastLinkPDB(This, pfFastLinkPDB)                       \
  ((This)->lpVtbl->isFastLinkPDB(This, pfFastLinkPDB))

#define IDiaSessionEx_isPortablePDB(This, pfPortablePDB)                       \
  ((This)->lpVtbl->isPortablePDB(This, pfPortablePDB))

#define IDiaSessionEx_getSourceLinkInfo(This, parent, ppenum)                  \
  ((This)->lpVtbl->getSourceLinkInfo(This, parent, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaSessionEx_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol_INTERFACE_DEFINED__
#define __IDiaSymbol_INTERFACE_DEFINED__

  /* interface IDiaSymbol */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("cb787b2f-bd6c-4635-ba52-933126bd2dcd")
  IDiaSymbol : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_symIndexId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_symTag(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name(
        /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lexicalParent(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_classParent(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type(
        /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_dataKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_locationType(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_registerId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_offset(
            /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_length(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_slot(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_volatileType(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_constType(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_unalignedType(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_access(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_libraryName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_platform(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_language(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_editAndContinueEnabled(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_frontEndMajor(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_frontEndMinor(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_frontEndBuild(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_backEndMajor(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_backEndMinor(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_backEndBuild(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sourceFileName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_unused(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_thunkOrdinal(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_thisAdjust(
            /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualBaseOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtual(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_intro(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_pure(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_callingConvention(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_value(
        /* [retval][out] */ VARIANT * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_baseType(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_token(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_timeStamp(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_guid(
        /* [retval][out] */ GUID * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_symbolsFileName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_reference(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_bitPosition(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_arrayIndexType(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_packed(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_constructor(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_overloadedOperator(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_nested(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasNestedTypes(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasAssignmentOperator(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasCastOperator(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_scoped(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualBaseClass(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_indirectVirtualBaseClass(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualBasePointerOffset(
            /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualTableShape(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lexicalParentId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_classParentId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_typeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_arrayIndexTypeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualTableShapeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_code(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_function(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_managed(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_msil(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualBaseDispIndex(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_undecoratedName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_age(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_signature(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compilerGenerated(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressTaken(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_rank(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lowerBound(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_upperBound(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lowerBoundId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_upperBoundId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_dataBytes(
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildren(
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenEx(
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByAddr(
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByVA(
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findChildrenExByRVA(
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_targetSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_targetOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_targetRelativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_targetVirtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_machineType(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_oemId(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_oemSymbolId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_types(
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD * pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol * *pTypes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_typeIds(
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD * pcTypeIds,
        /* [size_is][out] */ DWORD * pdwTypeIds) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_objectPointerType(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_udtKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_undecoratedNameEx(
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR * name) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_noReturn(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_customCallingConvention(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_noInline(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_optimizedCodeDebugInfo(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_notReached(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_interruptReturn(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_farReturn(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isStatic(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasDebugInfo(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isLTCG(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isDataAligned(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasSecurityChecks(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compilerName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasAlloca(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasSetJump(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasLongJump(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasInlAsm(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasEH(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasSEH(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasEHa(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isNaked(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isAggregated(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isSplitted(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_container(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_inlSpec(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_noStackOrdering(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualBaseTableType(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasManagedCode(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isHotpatchable(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isCVTCIL(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isMSILNetmodule(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isCTypes(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isStripped(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_frontEndQFE(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_backEndQFE(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_wasInlined(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_strictGSCheck(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isCxxReturnUdt(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isConstructorVirtualBase(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_RValueReference(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_unmodifiedType(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_framePointerPresent(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isSafeBuffers(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_intrinsic(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sealed(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hfaFloat(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hfaDouble(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_liveRangeStartAddressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_liveRangeStartAddressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_liveRangeStartRelativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_countLiveRanges(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_liveRangeLength(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_offsetInUdt(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_paramBasePointerRegisterId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_localBasePointerRegisterId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isLocationControlFlowDependent(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_stride(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_numberOfRows(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_numberOfColumns(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isMatrixRowMajor(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_numericProperties(
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD * pcnt,
        /* [size_is][out] */ DWORD * pProperties) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_modifierValues(
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD * pcnt,
        /* [size_is][out] */ WORD * pModifiers) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isReturnValue(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isOptimizedAway(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_builtInKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_registerType(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_baseDataSlot(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_baseDataOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_textureSlot(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_samplerSlot(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_uavSlot(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sizeInUdt(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_memorySpaceKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_unmodifiedTypeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_subTypeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_subType(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_numberOfModifiers(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_numberOfRegisterIndices(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isHLSLData(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isPointerToDataMember(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isPointerToMemberFunction(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isSingleInheritance(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isMultipleInheritance(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isVirtualInheritance(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_restrictedType(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isPointerBasedOnSymbolValue(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_baseSymbol(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_baseSymbolId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_objectFileName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isAcceleratorGroupSharedLocal(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isAcceleratorPointerTagLiveRange(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isAcceleratorStubFunction(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_numberOfAcceleratorPointerTags(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isSdl(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isWinRTPointer(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isRefUdt(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isValueUdt(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isInterfaceUdt(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByAddr(
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByRVA(
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineFramesByVA(
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLines(
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByAddr(
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByRVA(
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByVA(
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolsForAcceleratorPointerTag(
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE findSymbolsByRVAForAcceleratorPointerTag(
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols * *ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_acceleratorPointerTags(
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD * pcnt,
        /* [size_is][out] */ DWORD * pPointerTags) = 0;

    virtual HRESULT STDMETHODCALLTYPE getSrcLineOnTypeDefn(
        /* [out] */ IDiaLineNumber * *ppResult) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPGO(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasValidPGOCounts(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isOptimizedForSpeed(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_PGOEntryCount(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_PGOEdgeCount(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_PGODynamicInstructionCount(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_staticSize(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_finalLiveStaticSize(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_phaseName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasControlFlowCheck(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_constantExport(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_dataExport(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_privateExport(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_noNameExport(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exportHasExplicitlyAssignedOrdinal(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exportIsForwarder(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_ordinal(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_frameSize(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exceptionHandlerAddressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exceptionHandlerAddressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exceptionHandlerRelativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_exceptionHandlerVirtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile(
        /* [out] */ IDiaInputAssemblyFile * *ppResult) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_characteristics(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_coffGroup(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_bindID(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_bindSpace(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_bindSlot(
            /* [retval][out] */ DWORD * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbolVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

    END_INTERFACE
  } IDiaSymbolVtbl;

  interface IDiaSymbol { CONST_VTBL struct IDiaSymbolVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol_QueryInterface(This, riid, ppvObject)                       \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol_get_symIndexId(This, pRetVal)                               \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol_get_symTag(This, pRetVal)                                   \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol_get_name(This, pRetVal)                                     \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol_get_lexicalParent(This, pRetVal)                            \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol_get_classParent(This, pRetVal)                              \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol_get_type(This, pRetVal)                                     \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol_get_dataKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol_get_locationType(This, pRetVal)                             \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol_get_addressSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol_get_addressOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol_get_relativeVirtualAddress(This, pRetVal)                   \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol_get_virtualAddress(This, pRetVal)                           \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol_get_registerId(This, pRetVal)                               \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol_get_offset(This, pRetVal)                                   \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol_get_length(This, pRetVal)                                   \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol_get_slot(This, pRetVal)                                     \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol_get_volatileType(This, pRetVal)                             \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol_get_constType(This, pRetVal)                                \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol_get_unalignedType(This, pRetVal)                            \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol_get_access(This, pRetVal)                                   \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol_get_libraryName(This, pRetVal)                              \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol_get_platform(This, pRetVal)                                 \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol_get_language(This, pRetVal)                                 \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol_get_editAndContinueEnabled(This, pRetVal)                   \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol_get_frontEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol_get_frontEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol_get_frontEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol_get_backEndMajor(This, pRetVal)                             \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol_get_backEndMinor(This, pRetVal)                             \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol_get_backEndBuild(This, pRetVal)                             \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol_get_sourceFileName(This, pRetVal)                           \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol_get_unused(This, pRetVal)                                   \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol_get_thunkOrdinal(This, pRetVal)                             \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol_get_thisAdjust(This, pRetVal)                               \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol_get_virtualBaseOffset(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol_get_virtual(This, pRetVal)                                  \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol_get_intro(This, pRetVal)                                    \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol_get_pure(This, pRetVal)                                     \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol_get_callingConvention(This, pRetVal)                        \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol_get_value(This, pRetVal)                                    \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol_get_baseType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol_get_token(This, pRetVal)                                    \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol_get_timeStamp(This, pRetVal)                                \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol_get_guid(This, pRetVal)                                     \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol_get_symbolsFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol_get_reference(This, pRetVal)                                \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol_get_count(This, pRetVal)                                    \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol_get_bitPosition(This, pRetVal)                              \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol_get_arrayIndexType(This, pRetVal)                           \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol_get_packed(This, pRetVal)                                   \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol_get_constructor(This, pRetVal)                              \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol_get_overloadedOperator(This, pRetVal)                       \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol_get_nested(This, pRetVal)                                   \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol_get_hasNestedTypes(This, pRetVal)                           \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol_get_hasAssignmentOperator(This, pRetVal)                    \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol_get_hasCastOperator(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol_get_scoped(This, pRetVal)                                   \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol_get_virtualBaseClass(This, pRetVal)                         \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol_get_indirectVirtualBaseClass(This, pRetVal)                 \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol_get_virtualBasePointerOffset(This, pRetVal)                 \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol_get_virtualTableShape(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol_get_lexicalParentId(This, pRetVal)                          \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol_get_classParentId(This, pRetVal)                            \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol_get_typeId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol_get_arrayIndexTypeId(This, pRetVal)                         \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol_get_virtualTableShapeId(This, pRetVal)                      \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol_get_code(This, pRetVal)                                     \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol_get_function(This, pRetVal)                                 \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol_get_managed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol_get_msil(This, pRetVal)                                     \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol_get_virtualBaseDispIndex(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol_get_undecoratedName(This, pRetVal)                          \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol_get_age(This, pRetVal)                                      \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol_get_signature(This, pRetVal)                                \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol_get_compilerGenerated(This, pRetVal)                        \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol_get_addressTaken(This, pRetVal)                             \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol_get_rank(This, pRetVal)                                     \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol_get_lowerBound(This, pRetVal)                               \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol_get_upperBound(This, pRetVal)                               \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol_get_lowerBoundId(This, pRetVal)                             \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol_get_upperBoundId(This, pRetVal)                             \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol_get_dataBytes(This, cbData, pcbData, pbData)                \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol_findChildren(This, symtag, name, compareFlags, ppResult)    \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol_findChildrenEx(This, symtag, name, compareFlags, ppResult)  \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol_findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult)               \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol_findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult)                                \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol_findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol_get_targetSection(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol_get_targetOffset(This, pRetVal)                             \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol_get_targetRelativeVirtualAddress(This, pRetVal)             \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol_get_targetVirtualAddress(This, pRetVal)                     \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol_get_machineType(This, pRetVal)                              \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol_get_oemId(This, pRetVal)                                    \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol_get_oemSymbolId(This, pRetVal)                              \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol_get_types(This, cTypes, pcTypes, pTypes)                    \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)          \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol_get_objectPointerType(This, pRetVal)                        \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol_get_udtKind(This, pRetVal)                                  \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol_get_undecoratedNameEx(This, undecorateOptions, name)        \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol_get_noReturn(This, pRetVal)                                 \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol_get_customCallingConvention(This, pRetVal)                  \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol_get_noInline(This, pRetVal)                                 \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol_get_optimizedCodeDebugInfo(This, pRetVal)                   \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol_get_notReached(This, pRetVal)                               \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol_get_interruptReturn(This, pRetVal)                          \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol_get_farReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol_get_isStatic(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol_get_hasDebugInfo(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol_get_isLTCG(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol_get_isDataAligned(This, pRetVal)                            \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol_get_hasSecurityChecks(This, pRetVal)                        \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol_get_compilerName(This, pRetVal)                             \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol_get_hasAlloca(This, pRetVal)                                \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol_get_hasSetJump(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol_get_hasLongJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol_get_hasInlAsm(This, pRetVal)                                \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol_get_hasEH(This, pRetVal)                                    \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol_get_hasSEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol_get_hasEHa(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol_get_isNaked(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol_get_isAggregated(This, pRetVal)                             \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol_get_isSplitted(This, pRetVal)                               \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol_get_container(This, pRetVal)                                \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol_get_inlSpec(This, pRetVal)                                  \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol_get_noStackOrdering(This, pRetVal)                          \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol_get_virtualBaseTableType(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol_get_hasManagedCode(This, pRetVal)                           \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol_get_isHotpatchable(This, pRetVal)                           \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol_get_isCVTCIL(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol_get_isMSILNetmodule(This, pRetVal)                          \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol_get_isCTypes(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol_get_isStripped(This, pRetVal)                               \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol_get_frontEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol_get_backEndQFE(This, pRetVal)                               \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol_get_wasInlined(This, pRetVal)                               \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol_get_strictGSCheck(This, pRetVal)                            \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol_get_isCxxReturnUdt(This, pRetVal)                           \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol_get_isConstructorVirtualBase(This, pRetVal)                 \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol_get_RValueReference(This, pRetVal)                          \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol_get_unmodifiedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol_get_framePointerPresent(This, pRetVal)                      \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol_get_isSafeBuffers(This, pRetVal)                            \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol_get_intrinsic(This, pRetVal)                                \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol_get_sealed(This, pRetVal)                                   \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol_get_hfaFloat(This, pRetVal)                                 \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol_get_hfaDouble(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol_get_liveRangeStartAddressSection(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol_get_liveRangeStartAddressOffset(This, pRetVal)              \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)     \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol_get_countLiveRanges(This, pRetVal)                          \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol_get_liveRangeLength(This, pRetVal)                          \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol_get_offsetInUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol_get_paramBasePointerRegisterId(This, pRetVal)               \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol_get_localBasePointerRegisterId(This, pRetVal)               \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol_get_isLocationControlFlowDependent(This, pRetVal)           \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol_get_stride(This, pRetVal)                                   \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol_get_numberOfRows(This, pRetVal)                             \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol_get_numberOfColumns(This, pRetVal)                          \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol_get_isMatrixRowMajor(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol_get_numericProperties(This, cnt, pcnt, pProperties)         \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol_get_modifierValues(This, cnt, pcnt, pModifiers)             \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol_get_isReturnValue(This, pRetVal)                            \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol_get_isOptimizedAway(This, pRetVal)                          \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol_get_builtInKind(This, pRetVal)                              \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol_get_registerType(This, pRetVal)                             \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol_get_baseDataSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol_get_baseDataOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol_get_textureSlot(This, pRetVal)                              \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol_get_samplerSlot(This, pRetVal)                              \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol_get_uavSlot(This, pRetVal)                                  \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol_get_sizeInUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol_get_memorySpaceKind(This, pRetVal)                          \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol_get_unmodifiedTypeId(This, pRetVal)                         \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol_get_subTypeId(This, pRetVal)                                \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol_get_subType(This, pRetVal)                                  \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol_get_numberOfModifiers(This, pRetVal)                        \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol_get_numberOfRegisterIndices(This, pRetVal)                  \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol_get_isHLSLData(This, pRetVal)                               \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol_get_isPointerToDataMember(This, pRetVal)                    \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol_get_isPointerToMemberFunction(This, pRetVal)                \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol_get_isSingleInheritance(This, pRetVal)                      \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol_get_isMultipleInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol_get_isVirtualInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol_get_restrictedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol_get_isPointerBasedOnSymbolValue(This, pRetVal)              \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol_get_baseSymbol(This, pRetVal)                               \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol_get_baseSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol_get_objectFileName(This, pRetVal)                           \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol_get_isAcceleratorGroupSharedLocal(This, pRetVal)            \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol_get_isAcceleratorPointerTagLiveRange(This, pRetVal)         \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol_get_isAcceleratorStubFunction(This, pRetVal)                \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol_get_numberOfAcceleratorPointerTags(This, pRetVal)           \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol_get_isSdl(This, pRetVal)                                    \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol_get_isWinRTPointer(This, pRetVal)                           \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol_get_isRefUdt(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol_get_isValueUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol_get_isInterfaceUdt(This, pRetVal)                           \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol_findInlineFramesByAddr(This, isect, offset, ppResult)       \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol_findInlineFramesByRVA(This, rva, ppResult)                  \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol_findInlineFramesByVA(This, va, ppResult)                    \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol_findInlineeLines(This, ppResult)                            \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol_findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult)                            \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol_findInlineeLinesByRVA(This, rva, length, ppResult)          \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol_findInlineeLinesByVA(This, va, length, ppResult)            \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol_findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult)               \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult)     \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)   \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol_getSrcLineOnTypeDefn(This, ppResult)                        \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol_get_isPGO(This, pRetVal)                                    \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol_get_hasValidPGOCounts(This, pRetVal)                        \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol_get_isOptimizedForSpeed(This, pRetVal)                      \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol_get_PGOEntryCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol_get_PGOEdgeCount(This, pRetVal)                             \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol_get_PGODynamicInstructionCount(This, pRetVal)               \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol_get_staticSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol_get_finalLiveStaticSize(This, pRetVal)                      \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol_get_phaseName(This, pRetVal)                                \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol_get_hasControlFlowCheck(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol_get_constantExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol_get_dataExport(This, pRetVal)                               \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol_get_privateExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol_get_noNameExport(This, pRetVal)                             \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)       \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol_get_exportIsForwarder(This, pRetVal)                        \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol_get_ordinal(This, pRetVal)                                  \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol_get_frameSize(This, pRetVal)                                \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol_get_exceptionHandlerAddressSection(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol_get_exceptionHandlerAddressOffset(This, pRetVal)            \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)   \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol_get_exceptionHandlerVirtualAddress(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol_findInputAssemblyFile(This, ppResult)                       \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol_get_characteristics(This, pRetVal)                          \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol_get_coffGroup(This, pRetVal)                                \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol_get_bindID(This, pRetVal)                                   \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol_get_bindSpace(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol_get_bindSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_virtualBaseTableType_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB IDiaSymbol_get_virtualBaseTableType_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_hasManagedCode_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_hasManagedCode_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isHotpatchable_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isHotpatchable_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isCVTCIL_Proxy(IDiaSymbol *This,
                                /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isCVTCIL_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isMSILNetmodule_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isMSILNetmodule_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isCTypes_Proxy(IDiaSymbol *This,
                                /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isCTypes_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isStripped_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isStripped_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_frontEndQFE_Proxy(IDiaSymbol *This,
                                   /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_frontEndQFE_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_backEndQFE_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_backEndQFE_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_wasInlined_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_wasInlined_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_strictGSCheck_Proxy(IDiaSymbol *This,
                                     /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_strictGSCheck_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isCxxReturnUdt_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isCxxReturnUdt_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isConstructorVirtualBase_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isConstructorVirtualBase_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_RValueReference_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_RValueReference_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_unmodifiedType_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_unmodifiedType_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_framePointerPresent_Proxy(IDiaSymbol *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_framePointerPresent_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isSafeBuffers_Proxy(IDiaSymbol *This,
                                     /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isSafeBuffers_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_intrinsic_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_intrinsic_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_sealed_Proxy(IDiaSymbol *This,
                              /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_sealed_Stub(IRpcStubBuffer *This,
                             IRpcChannelBuffer *_pRpcChannelBuffer,
                             PRPC_MESSAGE _pRpcMessage,
                             DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_hfaFloat_Proxy(IDiaSymbol *This,
                                /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_hfaFloat_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_hfaDouble_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_hfaDouble_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_liveRangeStartAddressSection_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_liveRangeStartAddressSection_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_liveRangeStartAddressOffset_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_liveRangeStartAddressOffset_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_liveRangeStartRelativeVirtualAddress_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_liveRangeStartRelativeVirtualAddress_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_countLiveRanges_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_countLiveRanges_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_liveRangeLength_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ ULONGLONG *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_liveRangeLength_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_offsetInUdt_Proxy(IDiaSymbol *This,
                                   /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_offsetInUdt_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_paramBasePointerRegisterId_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_paramBasePointerRegisterId_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_localBasePointerRegisterId_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_localBasePointerRegisterId_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isLocationControlFlowDependent_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isLocationControlFlowDependent_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_stride_Proxy(IDiaSymbol *This,
                              /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_stride_Stub(IRpcStubBuffer *This,
                             IRpcChannelBuffer *_pRpcChannelBuffer,
                             PRPC_MESSAGE _pRpcMessage,
                             DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_numberOfRows_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_numberOfRows_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_numberOfColumns_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_numberOfColumns_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isMatrixRowMajor_Proxy(IDiaSymbol *This,
                                        /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isMatrixRowMajor_Stub(IRpcStubBuffer *This,
                                       IRpcChannelBuffer *_pRpcChannelBuffer,
                                       PRPC_MESSAGE _pRpcMessage,
                                       DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numericProperties_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD cnt,
      /* [out] */ DWORD *pcnt,
      /* [size_is][out] */ DWORD *pProperties);

  void __RPC_STUB
  IDiaSymbol_get_numericProperties_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_modifierValues_Proxy(IDiaSymbol *This,
                                      /* [in] */ DWORD cnt,
                                      /* [out] */ DWORD *pcnt,
                                      /* [size_is][out] */ WORD *pModifiers);

  void __RPC_STUB
  IDiaSymbol_get_modifierValues_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isReturnValue_Proxy(IDiaSymbol *This,
                                     /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isReturnValue_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isOptimizedAway_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isOptimizedAway_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_builtInKind_Proxy(IDiaSymbol *This,
                                   /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_builtInKind_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_registerType_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_registerType_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_baseDataSlot_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_baseDataSlot_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_baseDataOffset_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_baseDataOffset_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_textureSlot_Proxy(IDiaSymbol *This,
                                   /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_textureSlot_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_samplerSlot_Proxy(IDiaSymbol *This,
                                   /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_samplerSlot_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_uavSlot_Proxy(IDiaSymbol *This,
                               /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_uavSlot_Stub(IRpcStubBuffer *This,
                              IRpcChannelBuffer *_pRpcChannelBuffer,
                              PRPC_MESSAGE _pRpcMessage,
                              DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_sizeInUdt_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_sizeInUdt_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_memorySpaceKind_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_memorySpaceKind_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_unmodifiedTypeId_Proxy(IDiaSymbol *This,
                                        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_unmodifiedTypeId_Stub(IRpcStubBuffer *This,
                                       IRpcChannelBuffer *_pRpcChannelBuffer,
                                       PRPC_MESSAGE _pRpcMessage,
                                       DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_subTypeId_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_subTypeId_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_subType_Proxy(IDiaSymbol *This,
                               /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_subType_Stub(IRpcStubBuffer *This,
                              IRpcChannelBuffer *_pRpcChannelBuffer,
                              PRPC_MESSAGE _pRpcMessage,
                              DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_numberOfModifiers_Proxy(IDiaSymbol *This,
                                         /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_numberOfModifiers_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_numberOfRegisterIndices_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_numberOfRegisterIndices_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isHLSLData_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isHLSLData_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isPointerToDataMember_Proxy(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isPointerToDataMember_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isPointerToMemberFunction_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isPointerToMemberFunction_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isSingleInheritance_Proxy(IDiaSymbol *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isSingleInheritance_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isMultipleInheritance_Proxy(IDiaSymbol *This,
                                             /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isMultipleInheritance_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isVirtualInheritance_Proxy(IDiaSymbol *This,
                                            /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isVirtualInheritance_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_restrictedType_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_restrictedType_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isPointerBasedOnSymbolValue_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isPointerBasedOnSymbolValue_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_baseSymbol_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_baseSymbol_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_baseSymbolId_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_baseSymbolId_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_objectFileName_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BSTR *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_objectFileName_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isAcceleratorGroupSharedLocal_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isAcceleratorGroupSharedLocal_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isAcceleratorPointerTagLiveRange_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isAcceleratorPointerTagLiveRange_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isAcceleratorStubFunction_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_isAcceleratorStubFunction_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_numberOfAcceleratorPointerTags_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_numberOfAcceleratorPointerTags_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isSdl_Proxy(IDiaSymbol *This,
                             /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isSdl_Stub(IRpcStubBuffer *This,
                            IRpcChannelBuffer *_pRpcChannelBuffer,
                            PRPC_MESSAGE _pRpcMessage,
                            DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isWinRTPointer_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isWinRTPointer_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isRefUdt_Proxy(IDiaSymbol *This,
                                /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isRefUdt_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isValueUdt_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isValueUdt_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isInterfaceUdt_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isInterfaceUdt_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineFramesByAddr_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD isect,
      /* [in] */ DWORD offset,
      /* [out] */ IDiaEnumSymbols **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineFramesByAddr_Stub(IRpcStubBuffer *This,
                                         IRpcChannelBuffer *_pRpcChannelBuffer,
                                         PRPC_MESSAGE _pRpcMessage,
                                         DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineFramesByRVA_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD rva,
      /* [out] */ IDiaEnumSymbols **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineFramesByRVA_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_findInlineFramesByVA_Proxy(IDiaSymbol *This,
                                        /* [in] */ ULONGLONG va,
                                        /* [out] */ IDiaEnumSymbols **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineFramesByVA_Stub(IRpcStubBuffer *This,
                                       IRpcChannelBuffer *_pRpcChannelBuffer,
                                       PRPC_MESSAGE _pRpcMessage,
                                       DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_findInlineeLines_Proxy(IDiaSymbol *This,
                                    /* [out] */ IDiaEnumLineNumbers **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineeLines_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByAddr_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD isect,
      /* [in] */ DWORD offset,
      /* [in] */ DWORD length,
      /* [out] */ IDiaEnumLineNumbers **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineeLinesByAddr_Stub(IRpcStubBuffer *This,
                                         IRpcChannelBuffer *_pRpcChannelBuffer,
                                         PRPC_MESSAGE _pRpcMessage,
                                         DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByRVA_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD rva,
      /* [in] */ DWORD length,
      /* [out] */ IDiaEnumLineNumbers **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineeLinesByRVA_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByVA_Proxy(
      IDiaSymbol *This,
      /* [in] */ ULONGLONG va,
      /* [in] */ DWORD length,
      /* [out] */ IDiaEnumLineNumbers **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInlineeLinesByVA_Stub(IRpcStubBuffer *This,
                                       IRpcChannelBuffer *_pRpcChannelBuffer,
                                       PRPC_MESSAGE _pRpcMessage,
                                       DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_findSymbolsForAcceleratorPointerTag_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD tagValue,
      /* [out] */ IDiaEnumSymbols **ppResult);

  void __RPC_STUB IDiaSymbol_findSymbolsForAcceleratorPointerTag_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD tagValue,
      /* [in] */ DWORD rva,
      /* [out] */ IDiaEnumSymbols **ppResult);

  void __RPC_STUB IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_get_acceleratorPointerTags_Proxy(
      IDiaSymbol *This,
      /* [in] */ DWORD cnt,
      /* [out] */ DWORD *pcnt,
      /* [size_is][out] */ DWORD *pPointerTags);

  void __RPC_STUB IDiaSymbol_get_acceleratorPointerTags_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol_getSrcLineOnTypeDefn_Proxy(IDiaSymbol *This,
                                        /* [out] */ IDiaLineNumber **ppResult);

  void __RPC_STUB
  IDiaSymbol_getSrcLineOnTypeDefn_Stub(IRpcStubBuffer *This,
                                       IRpcChannelBuffer *_pRpcChannelBuffer,
                                       PRPC_MESSAGE _pRpcMessage,
                                       DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isPGO_Proxy(IDiaSymbol *This,
                             /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isPGO_Stub(IRpcStubBuffer *This,
                            IRpcChannelBuffer *_pRpcChannelBuffer,
                            PRPC_MESSAGE _pRpcMessage,
                            DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_hasValidPGOCounts_Proxy(IDiaSymbol *This,
                                         /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_hasValidPGOCounts_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_isOptimizedForSpeed_Proxy(IDiaSymbol *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_isOptimizedForSpeed_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_PGOEntryCount_Proxy(IDiaSymbol *This,
                                     /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_PGOEntryCount_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_PGOEdgeCount_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_PGOEdgeCount_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_PGODynamicInstructionCount_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

  void __RPC_STUB IDiaSymbol_get_PGODynamicInstructionCount_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_staticSize_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_staticSize_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_finalLiveStaticSize_Proxy(IDiaSymbol *This,
                                           /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_finalLiveStaticSize_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_phaseName_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ BSTR *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_phaseName_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_hasControlFlowCheck_Proxy(IDiaSymbol *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_hasControlFlowCheck_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_constantExport_Proxy(IDiaSymbol *This,
                                      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_constantExport_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_dataExport_Proxy(IDiaSymbol *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_dataExport_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_privateExport_Proxy(IDiaSymbol *This,
                                     /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_privateExport_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_noNameExport_Proxy(IDiaSymbol *This,
                                    /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_noNameExport_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Proxy(
      IDiaSymbol *This,
      /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exportIsForwarder_Proxy(IDiaSymbol *This,
                                         /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_exportIsForwarder_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_ordinal_Proxy(IDiaSymbol *This,
                               /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_ordinal_Stub(IRpcStubBuffer *This,
                              IRpcChannelBuffer *_pRpcChannelBuffer,
                              PRPC_MESSAGE _pRpcMessage,
                              DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_frameSize_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_frameSize_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exceptionHandlerAddressSection_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressSection_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exceptionHandlerAddressOffset_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressOffset_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_exceptionHandlerVirtualAddress_Proxy(
        IDiaSymbol *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

  void __RPC_STUB IDiaSymbol_get_exceptionHandlerVirtualAddress_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol_findInputAssemblyFile_Proxy(
        IDiaSymbol *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

  void __RPC_STUB
  IDiaSymbol_findInputAssemblyFile_Stub(IRpcStubBuffer *This,
                                        IRpcChannelBuffer *_pRpcChannelBuffer,
                                        PRPC_MESSAGE _pRpcMessage,
                                        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_characteristics_Proxy(IDiaSymbol *This,
                                       /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_characteristics_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_coffGroup_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_coffGroup_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_bindID_Proxy(IDiaSymbol *This,
                              /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_bindID_Stub(IRpcStubBuffer *This,
                             IRpcChannelBuffer *_pRpcChannelBuffer,
                             PRPC_MESSAGE _pRpcMessage,
                             DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_bindSpace_Proxy(IDiaSymbol *This,
                                 /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_bindSpace_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol_get_bindSlot_Proxy(IDiaSymbol *This,
                                /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol_get_bindSlot_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol2_INTERFACE_DEFINED__
#define __IDiaSymbol2_INTERFACE_DEFINED__

  /* interface IDiaSymbol2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("611e86cd-b7d1-4546-8a15-070e2b07a427")
  IDiaSymbol2 : public IDiaSymbol
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isObjCClass(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isObjCCategory(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isObjCProtocol(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol2 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol2 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol2 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol2 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol2 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol2 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol2 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol2 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol2 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol2 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol2 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol2 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol2 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol2 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol2 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol2 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol2 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol2 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol2 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol2 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol2Vtbl;

  interface IDiaSymbol2 { CONST_VTBL struct IDiaSymbol2Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol2_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol2_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol2_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol2_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol2_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol2_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol2_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol2_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol2_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol2_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol2_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol2_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol2_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol2_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol2_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol2_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol2_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol2_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol2_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol2_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol2_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol2_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol2_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol2_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol2_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol2_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol2_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol2_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol2_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol2_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol2_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol2_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol2_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol2_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol2_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol2_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol2_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol2_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol2_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol2_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol2_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol2_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol2_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol2_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol2_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol2_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol2_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol2_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol2_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol2_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol2_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol2_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol2_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol2_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol2_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol2_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol2_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol2_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol2_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol2_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol2_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol2_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol2_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol2_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol2_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol2_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol2_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol2_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol2_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol2_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol2_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol2_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol2_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol2_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol2_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol2_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol2_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol2_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol2_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol2_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol2_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol2_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol2_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol2_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol2_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol2_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol2_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol2_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol2_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol2_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol2_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol2_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol2_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol2_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol2_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol2_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol2_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol2_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol2_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol2_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol2_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol2_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol2_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol2_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol2_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol2_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol2_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol2_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol2_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol2_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol2_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol2_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol2_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol2_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol2_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol2_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol2_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol2_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol2_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol2_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol2_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol2_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol2_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol2_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol2_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol2_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol2_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol2_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol2_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol2_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol2_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol2_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol2_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol2_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol2_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol2_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol2_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol2_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol2_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol2_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol2_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol2_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol2_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol2_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol2_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol2_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol2_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol2_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol2_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol2_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol2_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol2_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol2_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol2_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol2_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol2_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol2_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol2_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol2_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol2_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol2_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol2_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol2_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol2_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol2_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol2_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol2_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol2_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol2_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol2_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol2_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol2_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol2_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol2_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol2_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol2_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol2_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol2_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol2_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol2_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol2_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol2_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol2_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol2_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol2_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol2_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol2_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol2_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol2_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol2_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol2_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol2_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol2_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol2_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol2_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol2_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol2_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol2_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol2_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol2_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol2_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol2_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol2_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol2_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol2_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol2_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol2_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol2_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol2_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol2_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol2_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol2_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol2_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol2_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol2_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol2_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol2_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol2_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol2_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol2_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol2_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol2_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol2_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol2_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol2_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol2_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol2_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol2_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol2_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol2_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol2_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol2_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol2_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol2_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol2_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol2_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol2_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol2_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol2_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol2_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol2_get_isObjCClass_Proxy(IDiaSymbol2 *This,
                                    /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol2_get_isObjCClass_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol2_get_isObjCCategory_Proxy(IDiaSymbol2 *This,
                                       /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol2_get_isObjCCategory_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol2_get_isObjCProtocol_Proxy(IDiaSymbol2 *This,
                                       /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol2_get_isObjCProtocol_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol2_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol3_INTERFACE_DEFINED__
#define __IDiaSymbol3_INTERFACE_DEFINED__

  /* interface IDiaSymbol3 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol3;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("99b665f7-c1b2-49d3-89b2-a384361acab5")
  IDiaSymbol3 : public IDiaSymbol2
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_inlinee(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_inlineeId(
            /* [retval][out] */ DWORD * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol3Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol3 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol3 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol3 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol3 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol3 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol3 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol3 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol3 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol3 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol3 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol3 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol3 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol3 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol3 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol3 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol3 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol3 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol3 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol3 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol3 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol3 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol3 *This,
        /* [retval][out] */ DWORD *pRetVal);

    END_INTERFACE
  } IDiaSymbol3Vtbl;

  interface IDiaSymbol3 { CONST_VTBL struct IDiaSymbol3Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol3_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol3_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol3_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol3_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol3_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol3_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol3_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol3_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol3_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol3_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol3_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol3_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol3_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol3_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol3_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol3_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol3_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol3_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol3_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol3_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol3_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol3_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol3_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol3_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol3_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol3_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol3_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol3_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol3_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol3_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol3_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol3_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol3_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol3_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol3_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol3_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol3_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol3_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol3_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol3_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol3_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol3_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol3_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol3_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol3_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol3_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol3_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol3_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol3_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol3_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol3_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol3_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol3_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol3_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol3_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol3_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol3_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol3_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol3_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol3_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol3_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol3_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol3_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol3_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol3_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol3_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol3_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol3_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol3_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol3_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol3_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol3_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol3_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol3_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol3_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol3_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol3_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol3_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol3_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol3_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol3_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol3_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol3_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol3_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol3_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol3_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol3_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol3_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol3_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol3_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol3_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol3_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol3_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol3_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol3_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol3_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol3_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol3_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol3_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol3_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol3_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol3_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol3_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol3_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol3_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol3_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol3_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol3_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol3_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol3_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol3_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol3_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol3_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol3_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol3_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol3_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol3_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol3_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol3_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol3_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol3_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol3_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol3_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol3_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol3_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol3_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol3_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol3_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol3_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol3_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol3_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol3_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol3_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol3_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol3_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol3_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol3_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol3_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol3_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol3_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol3_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol3_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol3_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol3_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol3_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol3_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol3_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol3_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol3_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol3_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol3_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol3_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol3_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol3_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol3_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol3_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol3_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol3_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol3_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol3_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol3_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol3_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol3_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol3_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol3_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol3_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol3_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol3_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol3_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol3_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol3_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol3_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol3_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol3_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol3_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol3_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol3_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol3_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol3_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol3_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol3_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol3_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol3_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol3_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol3_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol3_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol3_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol3_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol3_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol3_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol3_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol3_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol3_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol3_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol3_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol3_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol3_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol3_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol3_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol3_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol3_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol3_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol3_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol3_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol3_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol3_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol3_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol3_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol3_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol3_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol3_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol3_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol3_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol3_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol3_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol3_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol3_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol3_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol3_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol3_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol3_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol3_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol3_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol3_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol3_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol3_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol3_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol3_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol3_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol3_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol3_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol3_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol3_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol3_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol3_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol3_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol3_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol3_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol3_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol3_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol3_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol3_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol3_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol3_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol3_get_inlinee_Proxy(IDiaSymbol3 *This,
                                /* [retval][out] */ IDiaSymbol **pRetVal);

  void __RPC_STUB
  IDiaSymbol3_get_inlinee_Stub(IRpcStubBuffer *This,
                               IRpcChannelBuffer *_pRpcChannelBuffer,
                               PRPC_MESSAGE _pRpcMessage,
                               DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol3_get_inlineeId_Proxy(IDiaSymbol3 *This,
                                  /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol3_get_inlineeId_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol3_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol4_INTERFACE_DEFINED__
#define __IDiaSymbol4_INTERFACE_DEFINED__

  /* interface IDiaSymbol4 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol4;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("bf6c88a7-e9d6-4346-99a1-d053de5a7808")
  IDiaSymbol4 : public IDiaSymbol3
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_noexcept(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol4Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol4 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol4 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol4 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol4 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol4 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol4 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol4 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol4 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol4 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol4 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol4 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol4 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol4 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol4 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol4 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol4 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol4 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol4 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol4 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol4 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol4 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol4 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol4Vtbl;

  interface IDiaSymbol4 { CONST_VTBL struct IDiaSymbol4Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol4_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol4_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol4_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol4_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol4_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol4_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol4_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol4_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol4_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol4_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol4_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol4_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol4_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol4_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol4_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol4_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol4_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol4_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol4_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol4_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol4_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol4_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol4_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol4_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol4_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol4_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol4_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol4_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol4_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol4_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol4_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol4_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol4_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol4_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol4_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol4_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol4_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol4_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol4_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol4_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol4_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol4_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol4_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol4_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol4_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol4_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol4_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol4_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol4_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol4_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol4_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol4_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol4_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol4_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol4_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol4_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol4_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol4_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol4_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol4_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol4_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol4_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol4_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol4_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol4_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol4_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol4_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol4_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol4_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol4_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol4_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol4_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol4_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol4_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol4_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol4_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol4_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol4_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol4_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol4_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol4_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol4_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol4_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol4_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol4_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol4_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol4_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol4_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol4_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol4_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol4_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol4_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol4_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol4_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol4_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol4_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol4_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol4_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol4_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol4_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol4_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol4_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol4_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol4_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol4_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol4_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol4_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol4_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol4_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol4_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol4_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol4_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol4_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol4_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol4_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol4_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol4_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol4_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol4_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol4_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol4_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol4_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol4_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol4_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol4_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol4_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol4_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol4_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol4_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol4_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol4_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol4_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol4_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol4_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol4_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol4_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol4_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol4_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol4_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol4_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol4_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol4_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol4_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol4_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol4_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol4_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol4_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol4_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol4_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol4_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol4_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol4_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol4_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol4_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol4_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol4_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol4_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol4_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol4_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol4_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol4_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol4_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol4_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol4_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol4_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol4_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol4_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol4_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol4_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol4_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol4_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol4_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol4_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol4_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol4_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol4_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol4_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol4_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol4_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol4_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol4_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol4_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol4_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol4_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol4_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol4_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol4_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol4_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol4_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol4_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol4_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol4_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol4_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol4_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol4_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol4_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol4_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol4_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol4_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol4_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol4_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol4_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol4_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol4_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol4_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol4_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol4_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol4_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol4_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol4_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol4_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol4_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol4_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol4_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol4_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol4_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol4_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol4_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol4_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol4_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol4_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol4_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol4_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol4_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol4_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol4_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol4_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol4_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol4_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol4_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol4_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol4_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol4_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol4_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol4_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol4_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol4_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol4_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol4_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol4_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol4_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol4_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol4_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol4_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol4_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol4_get_noexcept_Proxy(IDiaSymbol4 *This,
                                 /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol4_get_noexcept_Stub(IRpcStubBuffer *This,
                                IRpcChannelBuffer *_pRpcChannelBuffer,
                                PRPC_MESSAGE _pRpcMessage,
                                DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol4_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol5_INTERFACE_DEFINED__
#define __IDiaSymbol5_INTERFACE_DEFINED__

  /* interface IDiaSymbol5 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol5;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("abe2de00-dc2d-4793-af9a-ef1d90832644")
  IDiaSymbol5 : public IDiaSymbol4
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_hasAbsoluteAddress(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol5Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol5 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol5 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol5 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol5 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol5 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol5 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol5 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol5 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol5 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol5 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol5 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol5 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol5 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol5 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol5 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol5 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol5 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol5 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol5 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol5 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol5 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol5Vtbl;

  interface IDiaSymbol5 { CONST_VTBL struct IDiaSymbol5Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol5_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol5_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol5_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol5_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol5_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol5_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol5_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol5_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol5_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol5_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol5_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol5_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol5_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol5_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol5_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol5_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol5_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol5_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol5_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol5_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol5_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol5_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol5_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol5_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol5_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol5_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol5_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol5_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol5_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol5_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol5_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol5_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol5_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol5_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol5_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol5_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol5_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol5_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol5_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol5_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol5_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol5_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol5_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol5_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol5_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol5_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol5_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol5_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol5_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol5_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol5_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol5_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol5_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol5_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol5_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol5_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol5_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol5_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol5_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol5_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol5_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol5_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol5_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol5_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol5_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol5_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol5_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol5_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol5_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol5_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol5_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol5_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol5_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol5_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol5_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol5_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol5_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol5_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol5_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol5_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol5_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol5_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol5_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol5_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol5_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol5_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol5_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol5_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol5_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol5_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol5_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol5_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol5_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol5_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol5_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol5_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol5_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol5_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol5_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol5_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol5_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol5_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol5_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol5_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol5_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol5_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol5_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol5_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol5_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol5_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol5_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol5_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol5_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol5_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol5_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol5_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol5_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol5_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol5_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol5_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol5_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol5_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol5_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol5_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol5_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol5_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol5_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol5_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol5_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol5_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol5_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol5_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol5_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol5_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol5_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol5_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol5_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol5_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol5_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol5_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol5_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol5_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol5_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol5_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol5_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol5_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol5_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol5_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol5_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol5_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol5_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol5_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol5_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol5_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol5_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol5_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol5_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol5_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol5_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol5_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol5_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol5_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol5_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol5_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol5_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol5_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol5_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol5_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol5_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol5_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol5_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol5_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol5_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol5_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol5_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol5_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol5_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol5_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol5_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol5_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol5_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol5_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol5_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol5_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol5_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol5_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol5_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol5_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol5_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol5_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol5_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol5_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol5_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol5_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol5_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol5_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol5_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol5_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol5_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol5_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol5_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol5_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol5_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol5_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol5_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol5_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol5_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol5_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol5_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol5_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol5_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol5_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol5_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol5_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol5_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol5_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol5_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol5_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol5_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol5_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol5_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol5_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol5_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol5_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol5_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol5_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol5_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol5_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol5_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol5_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol5_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol5_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol5_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol5_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol5_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol5_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol5_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol5_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol5_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol5_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol5_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol5_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol5_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol5_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol5_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol5_get_hasAbsoluteAddress(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol5_get_hasAbsoluteAddress_Proxy(IDiaSymbol5 *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol5_get_hasAbsoluteAddress_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol5_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol6_INTERFACE_DEFINED__
#define __IDiaSymbol6_INTERFACE_DEFINED__

  /* interface IDiaSymbol6 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol6;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("8133dad3-75fe-4234-ac7e-f8e7a1d3cbb3")
  IDiaSymbol6 : public IDiaSymbol5
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isStaticMemberFunc(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol6Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol6 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol6 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol6 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol6 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol6 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol6 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol6 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol6 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol6 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol6 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol6 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol6 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol6 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol6 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol6 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol6 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol6 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol6 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol6 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol6 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol6 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol6Vtbl;

  interface IDiaSymbol6 { CONST_VTBL struct IDiaSymbol6Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol6_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol6_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol6_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol6_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol6_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol6_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol6_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol6_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol6_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol6_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol6_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol6_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol6_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol6_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol6_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol6_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol6_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol6_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol6_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol6_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol6_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol6_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol6_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol6_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol6_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol6_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol6_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol6_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol6_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol6_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol6_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol6_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol6_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol6_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol6_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol6_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol6_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol6_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol6_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol6_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol6_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol6_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol6_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol6_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol6_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol6_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol6_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol6_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol6_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol6_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol6_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol6_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol6_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol6_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol6_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol6_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol6_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol6_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol6_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol6_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol6_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol6_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol6_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol6_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol6_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol6_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol6_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol6_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol6_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol6_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol6_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol6_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol6_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol6_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol6_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol6_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol6_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol6_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol6_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol6_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol6_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol6_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol6_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol6_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol6_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol6_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol6_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol6_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol6_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol6_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol6_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol6_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol6_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol6_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol6_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol6_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol6_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol6_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol6_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol6_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol6_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol6_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol6_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol6_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol6_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol6_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol6_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol6_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol6_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol6_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol6_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol6_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol6_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol6_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol6_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol6_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol6_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol6_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol6_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol6_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol6_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol6_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol6_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol6_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol6_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol6_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol6_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol6_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol6_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol6_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol6_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol6_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol6_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol6_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol6_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol6_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol6_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol6_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol6_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol6_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol6_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol6_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol6_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol6_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol6_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol6_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol6_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol6_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol6_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol6_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol6_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol6_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol6_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol6_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol6_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol6_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol6_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol6_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol6_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol6_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol6_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol6_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol6_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol6_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol6_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol6_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol6_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol6_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol6_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol6_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol6_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol6_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol6_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol6_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol6_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol6_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol6_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol6_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol6_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol6_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol6_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol6_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol6_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol6_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol6_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol6_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol6_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol6_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol6_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol6_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol6_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol6_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol6_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol6_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol6_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol6_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol6_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol6_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol6_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol6_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol6_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol6_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol6_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol6_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol6_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol6_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol6_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol6_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol6_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol6_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol6_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol6_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol6_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol6_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol6_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol6_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol6_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol6_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol6_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol6_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol6_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol6_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol6_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol6_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol6_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol6_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol6_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol6_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol6_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol6_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol6_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol6_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol6_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol6_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol6_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol6_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol6_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol6_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol6_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol6_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol6_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol6_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol6_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol6_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol6_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol6_get_hasAbsoluteAddress(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol6_get_isStaticMemberFunc(This, pRetVal)                      \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol6_get_isStaticMemberFunc_Proxy(IDiaSymbol6 *This,
                                           /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol6_get_isStaticMemberFunc_Stub(IRpcStubBuffer *This,
                                          IRpcChannelBuffer *_pRpcChannelBuffer,
                                          PRPC_MESSAGE _pRpcMessage,
                                          DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol6_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol7_INTERFACE_DEFINED__
#define __IDiaSymbol7_INTERFACE_DEFINED__

  /* interface IDiaSymbol7 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol7;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("64ce6cd5-7315-4328-86d6-10e303e010b4")
  IDiaSymbol7 : public IDiaSymbol6
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isSignRet(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol7Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol7 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol7 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol7 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol7 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol7 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol7 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol7 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol7 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol7 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol7 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol7 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol7 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol7 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol7 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol7 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol7 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol7 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol7 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol7 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol7 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSignRet)(
        IDiaSymbol7 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol7Vtbl;

  interface IDiaSymbol7 { CONST_VTBL struct IDiaSymbol7Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol7_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol7_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol7_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol7_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol7_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol7_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol7_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol7_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol7_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol7_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol7_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol7_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol7_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol7_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol7_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol7_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol7_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol7_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol7_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol7_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol7_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol7_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol7_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol7_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol7_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol7_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol7_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol7_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol7_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol7_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol7_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol7_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol7_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol7_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol7_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol7_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol7_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol7_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol7_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol7_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol7_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol7_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol7_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol7_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol7_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol7_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol7_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol7_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol7_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol7_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol7_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol7_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol7_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol7_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol7_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol7_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol7_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol7_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol7_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol7_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol7_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol7_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol7_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol7_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol7_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol7_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol7_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol7_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol7_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol7_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol7_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol7_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol7_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol7_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol7_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol7_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol7_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol7_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol7_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol7_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol7_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol7_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol7_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol7_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol7_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol7_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol7_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol7_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol7_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol7_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol7_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol7_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol7_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol7_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol7_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol7_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol7_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol7_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol7_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol7_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol7_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol7_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol7_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol7_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol7_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol7_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol7_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol7_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol7_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol7_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol7_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol7_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol7_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol7_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol7_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol7_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol7_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol7_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol7_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol7_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol7_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol7_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol7_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol7_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol7_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol7_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol7_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol7_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol7_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol7_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol7_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol7_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol7_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol7_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol7_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol7_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol7_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol7_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol7_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol7_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol7_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol7_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol7_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol7_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol7_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol7_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol7_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol7_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol7_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol7_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol7_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol7_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol7_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol7_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol7_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol7_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol7_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol7_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol7_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol7_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol7_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol7_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol7_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol7_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol7_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol7_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol7_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol7_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol7_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol7_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol7_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol7_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol7_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol7_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol7_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol7_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol7_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol7_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol7_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol7_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol7_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol7_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol7_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol7_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol7_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol7_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol7_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol7_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol7_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol7_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol7_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol7_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol7_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol7_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol7_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol7_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol7_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol7_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol7_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol7_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol7_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol7_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol7_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol7_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol7_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol7_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol7_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol7_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol7_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol7_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol7_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol7_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol7_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol7_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol7_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol7_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol7_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol7_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol7_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol7_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol7_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol7_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol7_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol7_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol7_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol7_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol7_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol7_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol7_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol7_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol7_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol7_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol7_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol7_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol7_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol7_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol7_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol7_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol7_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol7_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol7_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol7_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol7_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol7_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol7_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol7_get_hasAbsoluteAddress(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol7_get_isStaticMemberFunc(This, pRetVal)                      \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#define IDiaSymbol7_get_isSignRet(This, pRetVal)                               \
  ((This)->lpVtbl->get_isSignRet(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol7_get_isSignRet_Proxy(IDiaSymbol7 *This,
                                  /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol7_get_isSignRet_Stub(IRpcStubBuffer *This,
                                 IRpcChannelBuffer *_pRpcChannelBuffer,
                                 PRPC_MESSAGE _pRpcMessage,
                                 DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol7_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol8_INTERFACE_DEFINED__
#define __IDiaSymbol8_INTERFACE_DEFINED__

  /* interface IDiaSymbol8 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol8;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("7f2e041f-1294-41bd-b83a-e715972d2ce3")
  IDiaSymbol8 : public IDiaSymbol7
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_coroutineKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_associatedSymbolKind(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_associatedSymbolSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_associatedSymbolOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_associatedSymbolRva(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_associatedSymbolAddr(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol8Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol8 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol8 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol8 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol8 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol8 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol8 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol8 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol8 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol8 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol8 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol8 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol8 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol8 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol8 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol8 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol8 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol8 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol8 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol8 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSignRet)(
        IDiaSymbol8 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_coroutineKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolKind)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolSection)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolOffset)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolRva)(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolAddr)(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    END_INTERFACE
  } IDiaSymbol8Vtbl;

  interface IDiaSymbol8 { CONST_VTBL struct IDiaSymbol8Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol8_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol8_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol8_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol8_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol8_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol8_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol8_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol8_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol8_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol8_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol8_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol8_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol8_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol8_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol8_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol8_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol8_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol8_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol8_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol8_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol8_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol8_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol8_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol8_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol8_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol8_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol8_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol8_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol8_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol8_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol8_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol8_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol8_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol8_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol8_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol8_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol8_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol8_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol8_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol8_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol8_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol8_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol8_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol8_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol8_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol8_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol8_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol8_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol8_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol8_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol8_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol8_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol8_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol8_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol8_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol8_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol8_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol8_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol8_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol8_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol8_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol8_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol8_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol8_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol8_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol8_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol8_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol8_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol8_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol8_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol8_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol8_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol8_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol8_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol8_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol8_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol8_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol8_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol8_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol8_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol8_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol8_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol8_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol8_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol8_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol8_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol8_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol8_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol8_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol8_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol8_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol8_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol8_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol8_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol8_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol8_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol8_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol8_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol8_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol8_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol8_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol8_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol8_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol8_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol8_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol8_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol8_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol8_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol8_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol8_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol8_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol8_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol8_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol8_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol8_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol8_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol8_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol8_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol8_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol8_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol8_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol8_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol8_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol8_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol8_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol8_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol8_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol8_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol8_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol8_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol8_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol8_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol8_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol8_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol8_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol8_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol8_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol8_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol8_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol8_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol8_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol8_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol8_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol8_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol8_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol8_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol8_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol8_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol8_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol8_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol8_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol8_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol8_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol8_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol8_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol8_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol8_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol8_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol8_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol8_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol8_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol8_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol8_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol8_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol8_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol8_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol8_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol8_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol8_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol8_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol8_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol8_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol8_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol8_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol8_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol8_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol8_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol8_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol8_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol8_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol8_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol8_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol8_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol8_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol8_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol8_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol8_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol8_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol8_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol8_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol8_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol8_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol8_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol8_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol8_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol8_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol8_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol8_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol8_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol8_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol8_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol8_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol8_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol8_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol8_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol8_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol8_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol8_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol8_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol8_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol8_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol8_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol8_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol8_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol8_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol8_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol8_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol8_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol8_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol8_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol8_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol8_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol8_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol8_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol8_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol8_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol8_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol8_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol8_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol8_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol8_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol8_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol8_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol8_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol8_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol8_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol8_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol8_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol8_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol8_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol8_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol8_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol8_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol8_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol8_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol8_get_hasAbsoluteAddress(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol8_get_isStaticMemberFunc(This, pRetVal)                      \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#define IDiaSymbol8_get_isSignRet(This, pRetVal)                               \
  ((This)->lpVtbl->get_isSignRet(This, pRetVal))

#define IDiaSymbol8_get_coroutineKind(This, pRetVal)                           \
  ((This)->lpVtbl->get_coroutineKind(This, pRetVal))

#define IDiaSymbol8_get_associatedSymbolKind(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolKind(This, pRetVal))

#define IDiaSymbol8_get_associatedSymbolSection(This, pRetVal)                 \
  ((This)->lpVtbl->get_associatedSymbolSection(This, pRetVal))

#define IDiaSymbol8_get_associatedSymbolOffset(This, pRetVal)                  \
  ((This)->lpVtbl->get_associatedSymbolOffset(This, pRetVal))

#define IDiaSymbol8_get_associatedSymbolRva(This, pRetVal)                     \
  ((This)->lpVtbl->get_associatedSymbolRva(This, pRetVal))

#define IDiaSymbol8_get_associatedSymbolAddr(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolAddr(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_coroutineKind_Proxy(IDiaSymbol8 *This,
                                      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol8_get_coroutineKind_Stub(IRpcStubBuffer *This,
                                     IRpcChannelBuffer *_pRpcChannelBuffer,
                                     PRPC_MESSAGE _pRpcMessage,
                                     DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_associatedSymbolKind_Proxy(
      IDiaSymbol8 *This,
      /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol8_get_associatedSymbolKind_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_associatedSymbolSection_Proxy(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol8_get_associatedSymbolSection_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_associatedSymbolOffset_Proxy(
        IDiaSymbol8 *This,
        /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol8_get_associatedSymbolOffset_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_associatedSymbolRva_Proxy(IDiaSymbol8 *This,
                                            /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB IDiaSymbol8_get_associatedSymbolRva_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol8_get_associatedSymbolAddr_Proxy(
        IDiaSymbol8 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

  void __RPC_STUB IDiaSymbol8_get_associatedSymbolAddr_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol8_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol9_INTERFACE_DEFINED__
#define __IDiaSymbol9_INTERFACE_DEFINED__

  /* interface IDiaSymbol9 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol9;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("a89e5969-92a1-4f8a-b704-00121c37abbb")
  IDiaSymbol9 : public IDiaSymbol8
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_framePadSize(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_framePadOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_isRTCs(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol9Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol9 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol9 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol9 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol9 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol9 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol9 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol9 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol9 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol9 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol9 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol9 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol9 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol9 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol9 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol9 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol9 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol9 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol9 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol9 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSignRet)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_coroutineKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolKind)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolSection)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolRva)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolAddr)(
        IDiaSymbol9 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadSize)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadOffset)(
        IDiaSymbol9 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRTCs)(
        IDiaSymbol9 *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSymbol9Vtbl;

  interface IDiaSymbol9 { CONST_VTBL struct IDiaSymbol9Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol9_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol9_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol9_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol9_get_symIndexId(This, pRetVal)                              \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol9_get_symTag(This, pRetVal)                                  \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol9_get_name(This, pRetVal)                                    \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol9_get_lexicalParent(This, pRetVal)                           \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol9_get_classParent(This, pRetVal)                             \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol9_get_type(This, pRetVal)                                    \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol9_get_dataKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol9_get_locationType(This, pRetVal)                            \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol9_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol9_get_addressOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol9_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol9_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol9_get_registerId(This, pRetVal)                              \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol9_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol9_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol9_get_slot(This, pRetVal)                                    \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol9_get_volatileType(This, pRetVal)                            \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol9_get_constType(This, pRetVal)                               \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol9_get_unalignedType(This, pRetVal)                           \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol9_get_access(This, pRetVal)                                  \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol9_get_libraryName(This, pRetVal)                             \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol9_get_platform(This, pRetVal)                                \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol9_get_language(This, pRetVal)                                \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol9_get_editAndContinueEnabled(This, pRetVal)                  \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol9_get_frontEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol9_get_frontEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol9_get_frontEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol9_get_backEndMajor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol9_get_backEndMinor(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol9_get_backEndBuild(This, pRetVal)                            \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol9_get_sourceFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol9_get_unused(This, pRetVal)                                  \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol9_get_thunkOrdinal(This, pRetVal)                            \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol9_get_thisAdjust(This, pRetVal)                              \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol9_get_virtualBaseOffset(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol9_get_virtual(This, pRetVal)                                 \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol9_get_intro(This, pRetVal)                                   \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol9_get_pure(This, pRetVal)                                    \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol9_get_callingConvention(This, pRetVal)                       \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol9_get_value(This, pRetVal)                                   \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol9_get_baseType(This, pRetVal)                                \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol9_get_token(This, pRetVal)                                   \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol9_get_timeStamp(This, pRetVal)                               \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol9_get_guid(This, pRetVal)                                    \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol9_get_symbolsFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol9_get_reference(This, pRetVal)                               \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol9_get_count(This, pRetVal)                                   \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol9_get_bitPosition(This, pRetVal)                             \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol9_get_arrayIndexType(This, pRetVal)                          \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol9_get_packed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol9_get_constructor(This, pRetVal)                             \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol9_get_overloadedOperator(This, pRetVal)                      \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol9_get_nested(This, pRetVal)                                  \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol9_get_hasNestedTypes(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol9_get_hasAssignmentOperator(This, pRetVal)                   \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol9_get_hasCastOperator(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol9_get_scoped(This, pRetVal)                                  \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol9_get_virtualBaseClass(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol9_get_indirectVirtualBaseClass(This, pRetVal)                \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol9_get_virtualBasePointerOffset(This, pRetVal)                \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol9_get_virtualTableShape(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol9_get_lexicalParentId(This, pRetVal)                         \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol9_get_classParentId(This, pRetVal)                           \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol9_get_typeId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol9_get_arrayIndexTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol9_get_virtualTableShapeId(This, pRetVal)                     \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol9_get_code(This, pRetVal)                                    \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol9_get_function(This, pRetVal)                                \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol9_get_managed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol9_get_msil(This, pRetVal)                                    \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol9_get_virtualBaseDispIndex(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol9_get_undecoratedName(This, pRetVal)                         \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol9_get_age(This, pRetVal)                                     \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol9_get_signature(This, pRetVal)                               \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol9_get_compilerGenerated(This, pRetVal)                       \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol9_get_addressTaken(This, pRetVal)                            \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol9_get_rank(This, pRetVal)                                    \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol9_get_lowerBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol9_get_upperBound(This, pRetVal)                              \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol9_get_lowerBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol9_get_upperBoundId(This, pRetVal)                            \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol9_get_dataBytes(This, cbData, pcbData, pbData)               \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol9_findChildren(This, symtag, name, compareFlags, ppResult)   \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol9_findChildrenEx(This, symtag, name, compareFlags, ppResult) \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol9_findChildrenExByAddr(This, symtag, name, compareFlags,     \
                                         isect, offset, ppResult)              \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol9_findChildrenExByVA(This, symtag, name, compareFlags, va,   \
                                       ppResult)                               \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol9_findChildrenExByRVA(This, symtag, name, compareFlags, rva, \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol9_get_targetSection(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol9_get_targetOffset(This, pRetVal)                            \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol9_get_targetRelativeVirtualAddress(This, pRetVal)            \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol9_get_targetVirtualAddress(This, pRetVal)                    \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol9_get_machineType(This, pRetVal)                             \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol9_get_oemId(This, pRetVal)                                   \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol9_get_oemSymbolId(This, pRetVal)                             \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol9_get_types(This, cTypes, pcTypes, pTypes)                   \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol9_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)         \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol9_get_objectPointerType(This, pRetVal)                       \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol9_get_udtKind(This, pRetVal)                                 \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol9_get_undecoratedNameEx(This, undecorateOptions, name)       \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol9_get_noReturn(This, pRetVal)                                \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol9_get_customCallingConvention(This, pRetVal)                 \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol9_get_noInline(This, pRetVal)                                \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol9_get_optimizedCodeDebugInfo(This, pRetVal)                  \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol9_get_notReached(This, pRetVal)                              \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol9_get_interruptReturn(This, pRetVal)                         \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol9_get_farReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol9_get_isStatic(This, pRetVal)                                \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol9_get_hasDebugInfo(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol9_get_isLTCG(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol9_get_isDataAligned(This, pRetVal)                           \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol9_get_hasSecurityChecks(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol9_get_compilerName(This, pRetVal)                            \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol9_get_hasAlloca(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol9_get_hasSetJump(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol9_get_hasLongJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol9_get_hasInlAsm(This, pRetVal)                               \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol9_get_hasEH(This, pRetVal)                                   \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol9_get_hasSEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol9_get_hasEHa(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol9_get_isNaked(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol9_get_isAggregated(This, pRetVal)                            \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol9_get_isSplitted(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol9_get_container(This, pRetVal)                               \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol9_get_inlSpec(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol9_get_noStackOrdering(This, pRetVal)                         \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol9_get_virtualBaseTableType(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol9_get_hasManagedCode(This, pRetVal)                          \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol9_get_isHotpatchable(This, pRetVal)                          \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol9_get_isCVTCIL(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol9_get_isMSILNetmodule(This, pRetVal)                         \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol9_get_isCTypes(This, pRetVal)                                \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol9_get_isStripped(This, pRetVal)                              \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol9_get_frontEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol9_get_backEndQFE(This, pRetVal)                              \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol9_get_wasInlined(This, pRetVal)                              \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol9_get_strictGSCheck(This, pRetVal)                           \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol9_get_isCxxReturnUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol9_get_isConstructorVirtualBase(This, pRetVal)                \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol9_get_RValueReference(This, pRetVal)                         \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol9_get_unmodifiedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol9_get_framePointerPresent(This, pRetVal)                     \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol9_get_isSafeBuffers(This, pRetVal)                           \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol9_get_intrinsic(This, pRetVal)                               \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol9_get_sealed(This, pRetVal)                                  \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol9_get_hfaFloat(This, pRetVal)                                \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol9_get_hfaDouble(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol9_get_liveRangeStartAddressSection(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol9_get_liveRangeStartAddressOffset(This, pRetVal)             \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol9_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)    \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol9_get_countLiveRanges(This, pRetVal)                         \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol9_get_liveRangeLength(This, pRetVal)                         \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol9_get_offsetInUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol9_get_paramBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol9_get_localBasePointerRegisterId(This, pRetVal)              \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol9_get_isLocationControlFlowDependent(This, pRetVal)          \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol9_get_stride(This, pRetVal)                                  \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol9_get_numberOfRows(This, pRetVal)                            \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol9_get_numberOfColumns(This, pRetVal)                         \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol9_get_isMatrixRowMajor(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol9_get_numericProperties(This, cnt, pcnt, pProperties)        \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol9_get_modifierValues(This, cnt, pcnt, pModifiers)            \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol9_get_isReturnValue(This, pRetVal)                           \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol9_get_isOptimizedAway(This, pRetVal)                         \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol9_get_builtInKind(This, pRetVal)                             \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol9_get_registerType(This, pRetVal)                            \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol9_get_baseDataSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol9_get_baseDataOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol9_get_textureSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol9_get_samplerSlot(This, pRetVal)                             \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol9_get_uavSlot(This, pRetVal)                                 \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol9_get_sizeInUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol9_get_memorySpaceKind(This, pRetVal)                         \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol9_get_unmodifiedTypeId(This, pRetVal)                        \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol9_get_subTypeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol9_get_subType(This, pRetVal)                                 \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol9_get_numberOfModifiers(This, pRetVal)                       \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol9_get_numberOfRegisterIndices(This, pRetVal)                 \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol9_get_isHLSLData(This, pRetVal)                              \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol9_get_isPointerToDataMember(This, pRetVal)                   \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol9_get_isPointerToMemberFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol9_get_isSingleInheritance(This, pRetVal)                     \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol9_get_isMultipleInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol9_get_isVirtualInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol9_get_restrictedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol9_get_isPointerBasedOnSymbolValue(This, pRetVal)             \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol9_get_baseSymbol(This, pRetVal)                              \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol9_get_baseSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol9_get_objectFileName(This, pRetVal)                          \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol9_get_isAcceleratorGroupSharedLocal(This, pRetVal)           \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol9_get_isAcceleratorPointerTagLiveRange(This, pRetVal)        \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol9_get_isAcceleratorStubFunction(This, pRetVal)               \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol9_get_numberOfAcceleratorPointerTags(This, pRetVal)          \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol9_get_isSdl(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol9_get_isWinRTPointer(This, pRetVal)                          \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol9_get_isRefUdt(This, pRetVal)                                \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol9_get_isValueUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol9_get_isInterfaceUdt(This, pRetVal)                          \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol9_findInlineFramesByAddr(This, isect, offset, ppResult)      \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol9_findInlineFramesByRVA(This, rva, ppResult)                 \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol9_findInlineFramesByVA(This, va, ppResult)                   \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol9_findInlineeLines(This, ppResult)                           \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol9_findInlineeLinesByAddr(This, isect, offset, length,        \
                                           ppResult)                           \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol9_findInlineeLinesByRVA(This, rva, length, ppResult)         \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol9_findInlineeLinesByVA(This, va, length, ppResult)           \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol9_findSymbolsForAcceleratorPointerTag(This, tagValue,        \
                                                        ppResult)              \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol9_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,   \
                                                             rva, ppResult)    \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol9_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags)  \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol9_getSrcLineOnTypeDefn(This, ppResult)                       \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol9_get_isPGO(This, pRetVal)                                   \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol9_get_hasValidPGOCounts(This, pRetVal)                       \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol9_get_isOptimizedForSpeed(This, pRetVal)                     \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol9_get_PGOEntryCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol9_get_PGOEdgeCount(This, pRetVal)                            \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol9_get_PGODynamicInstructionCount(This, pRetVal)              \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol9_get_staticSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol9_get_finalLiveStaticSize(This, pRetVal)                     \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol9_get_phaseName(This, pRetVal)                               \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol9_get_hasControlFlowCheck(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol9_get_constantExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol9_get_dataExport(This, pRetVal)                              \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol9_get_privateExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol9_get_noNameExport(This, pRetVal)                            \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol9_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)      \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol9_get_exportIsForwarder(This, pRetVal)                       \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol9_get_ordinal(This, pRetVal)                                 \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol9_get_frameSize(This, pRetVal)                               \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol9_get_exceptionHandlerAddressSection(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol9_get_exceptionHandlerAddressOffset(This, pRetVal)           \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol9_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal)  \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol9_get_exceptionHandlerVirtualAddress(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol9_findInputAssemblyFile(This, ppResult)                      \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol9_get_characteristics(This, pRetVal)                         \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol9_get_coffGroup(This, pRetVal)                               \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol9_get_bindID(This, pRetVal)                                  \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol9_get_bindSpace(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol9_get_bindSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol9_get_isObjCClass(This, pRetVal)                             \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol9_get_isObjCCategory(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol9_get_isObjCProtocol(This, pRetVal)                          \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol9_get_inlinee(This, pRetVal)                                 \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol9_get_inlineeId(This, pRetVal)                               \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol9_get_noexcept(This, pRetVal)                                \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol9_get_hasAbsoluteAddress(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol9_get_isStaticMemberFunc(This, pRetVal)                      \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#define IDiaSymbol9_get_isSignRet(This, pRetVal)                               \
  ((This)->lpVtbl->get_isSignRet(This, pRetVal))

#define IDiaSymbol9_get_coroutineKind(This, pRetVal)                           \
  ((This)->lpVtbl->get_coroutineKind(This, pRetVal))

#define IDiaSymbol9_get_associatedSymbolKind(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolKind(This, pRetVal))

#define IDiaSymbol9_get_associatedSymbolSection(This, pRetVal)                 \
  ((This)->lpVtbl->get_associatedSymbolSection(This, pRetVal))

#define IDiaSymbol9_get_associatedSymbolOffset(This, pRetVal)                  \
  ((This)->lpVtbl->get_associatedSymbolOffset(This, pRetVal))

#define IDiaSymbol9_get_associatedSymbolRva(This, pRetVal)                     \
  ((This)->lpVtbl->get_associatedSymbolRva(This, pRetVal))

#define IDiaSymbol9_get_associatedSymbolAddr(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolAddr(This, pRetVal))

#define IDiaSymbol9_get_framePadSize(This, pRetVal)                            \
  ((This)->lpVtbl->get_framePadSize(This, pRetVal))

#define IDiaSymbol9_get_framePadOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_framePadOffset(This, pRetVal))

#define IDiaSymbol9_get_isRTCs(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isRTCs(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol9_get_framePadSize_Proxy(IDiaSymbol9 *This,
                                     /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol9_get_framePadSize_Stub(IRpcStubBuffer *This,
                                    IRpcChannelBuffer *_pRpcChannelBuffer,
                                    PRPC_MESSAGE _pRpcMessage,
                                    DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol9_get_framePadOffset_Proxy(IDiaSymbol9 *This,
                                       /* [retval][out] */ DWORD *pRetVal);

  void __RPC_STUB
  IDiaSymbol9_get_framePadOffset_Stub(IRpcStubBuffer *This,
                                      IRpcChannelBuffer *_pRpcChannelBuffer,
                                      PRPC_MESSAGE _pRpcMessage,
                                      DWORD *_pdwStubPhase);

  /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
  IDiaSymbol9_get_isRTCs_Proxy(IDiaSymbol9 *This,
                               /* [retval][out] */ BOOL *pRetVal);

  void __RPC_STUB
  IDiaSymbol9_get_isRTCs_Stub(IRpcStubBuffer *This,
                              IRpcChannelBuffer *_pRpcChannelBuffer,
                              PRPC_MESSAGE _pRpcMessage,
                              DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol9_INTERFACE_DEFINED__ */

#ifndef __IDiaSymbol10_INTERFACE_DEFINED__
#define __IDiaSymbol10_INTERFACE_DEFINED__

  /* interface IDiaSymbol10 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol10;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("9034a70b-b0b7-4605-8a97-33772f3a7b8c")
  IDiaSymbol10 : public IDiaSymbol9
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE get_sourceLink(
        /* [in] */ DWORD cb,
        /* [out] */ DWORD * pcb,
        /* [size_is][out] */ BYTE * pb) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol10Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol10 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol10 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol10 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol10 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol10 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol10 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol10 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol10 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol10 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol10 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol10 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol10 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol10 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol10 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol10 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol10 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol10 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol10 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol10 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSignRet)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_coroutineKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolKind)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolSection)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolRva)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolAddr)(
        IDiaSymbol10 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadSize)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadOffset)(
        IDiaSymbol10 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRTCs)(
        IDiaSymbol10 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_sourceLink)(IDiaSymbol10 *This,
                                               /* [in] */ DWORD cb,
                                               /* [out] */ DWORD *pcb,
                                               /* [size_is][out] */ BYTE *pb);

    END_INTERFACE
  } IDiaSymbol10Vtbl;

  interface IDiaSymbol10 { CONST_VTBL struct IDiaSymbol10Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol10_QueryInterface(This, riid, ppvObject)                     \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol10_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol10_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol10_get_symIndexId(This, pRetVal)                             \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol10_get_symTag(This, pRetVal)                                 \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol10_get_name(This, pRetVal)                                   \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol10_get_lexicalParent(This, pRetVal)                          \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol10_get_classParent(This, pRetVal)                            \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol10_get_type(This, pRetVal)                                   \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol10_get_dataKind(This, pRetVal)                               \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol10_get_locationType(This, pRetVal)                           \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol10_get_addressSection(This, pRetVal)                         \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol10_get_addressOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol10_get_relativeVirtualAddress(This, pRetVal)                 \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol10_get_virtualAddress(This, pRetVal)                         \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol10_get_registerId(This, pRetVal)                             \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol10_get_offset(This, pRetVal)                                 \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol10_get_length(This, pRetVal)                                 \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol10_get_slot(This, pRetVal)                                   \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol10_get_volatileType(This, pRetVal)                           \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol10_get_constType(This, pRetVal)                              \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol10_get_unalignedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol10_get_access(This, pRetVal)                                 \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol10_get_libraryName(This, pRetVal)                            \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol10_get_platform(This, pRetVal)                               \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol10_get_language(This, pRetVal)                               \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol10_get_editAndContinueEnabled(This, pRetVal)                 \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol10_get_frontEndMajor(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol10_get_frontEndMinor(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol10_get_frontEndBuild(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol10_get_backEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol10_get_backEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol10_get_backEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol10_get_sourceFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol10_get_unused(This, pRetVal)                                 \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol10_get_thunkOrdinal(This, pRetVal)                           \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol10_get_thisAdjust(This, pRetVal)                             \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol10_get_virtualBaseOffset(This, pRetVal)                      \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol10_get_virtual(This, pRetVal)                                \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol10_get_intro(This, pRetVal)                                  \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol10_get_pure(This, pRetVal)                                   \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol10_get_callingConvention(This, pRetVal)                      \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol10_get_value(This, pRetVal)                                  \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol10_get_baseType(This, pRetVal)                               \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol10_get_token(This, pRetVal)                                  \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol10_get_timeStamp(This, pRetVal)                              \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol10_get_guid(This, pRetVal)                                   \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol10_get_symbolsFileName(This, pRetVal)                        \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol10_get_reference(This, pRetVal)                              \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol10_get_count(This, pRetVal)                                  \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol10_get_bitPosition(This, pRetVal)                            \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol10_get_arrayIndexType(This, pRetVal)                         \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol10_get_packed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol10_get_constructor(This, pRetVal)                            \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol10_get_overloadedOperator(This, pRetVal)                     \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol10_get_nested(This, pRetVal)                                 \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol10_get_hasNestedTypes(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol10_get_hasAssignmentOperator(This, pRetVal)                  \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol10_get_hasCastOperator(This, pRetVal)                        \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol10_get_scoped(This, pRetVal)                                 \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol10_get_virtualBaseClass(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol10_get_indirectVirtualBaseClass(This, pRetVal)               \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol10_get_virtualBasePointerOffset(This, pRetVal)               \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol10_get_virtualTableShape(This, pRetVal)                      \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol10_get_lexicalParentId(This, pRetVal)                        \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol10_get_classParentId(This, pRetVal)                          \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol10_get_typeId(This, pRetVal)                                 \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol10_get_arrayIndexTypeId(This, pRetVal)                       \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol10_get_virtualTableShapeId(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol10_get_code(This, pRetVal)                                   \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol10_get_function(This, pRetVal)                               \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol10_get_managed(This, pRetVal)                                \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol10_get_msil(This, pRetVal)                                   \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol10_get_virtualBaseDispIndex(This, pRetVal)                   \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol10_get_undecoratedName(This, pRetVal)                        \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol10_get_age(This, pRetVal)                                    \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol10_get_signature(This, pRetVal)                              \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol10_get_compilerGenerated(This, pRetVal)                      \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol10_get_addressTaken(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol10_get_rank(This, pRetVal)                                   \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol10_get_lowerBound(This, pRetVal)                             \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol10_get_upperBound(This, pRetVal)                             \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol10_get_lowerBoundId(This, pRetVal)                           \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol10_get_upperBoundId(This, pRetVal)                           \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol10_get_dataBytes(This, cbData, pcbData, pbData)              \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol10_findChildren(This, symtag, name, compareFlags, ppResult)  \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol10_findChildrenEx(This, symtag, name, compareFlags,          \
                                    ppResult)                                  \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol10_findChildrenExByAddr(This, symtag, name, compareFlags,    \
                                          isect, offset, ppResult)             \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol10_findChildrenExByVA(This, symtag, name, compareFlags, va,  \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol10_findChildrenExByRVA(This, symtag, name, compareFlags,     \
                                         rva, ppResult)                        \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol10_get_targetSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol10_get_targetOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol10_get_targetRelativeVirtualAddress(This, pRetVal)           \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol10_get_targetVirtualAddress(This, pRetVal)                   \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol10_get_machineType(This, pRetVal)                            \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol10_get_oemId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol10_get_oemSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol10_get_types(This, cTypes, pcTypes, pTypes)                  \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol10_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)        \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol10_get_objectPointerType(This, pRetVal)                      \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol10_get_udtKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol10_get_undecoratedNameEx(This, undecorateOptions, name)      \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol10_get_noReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol10_get_customCallingConvention(This, pRetVal)                \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol10_get_noInline(This, pRetVal)                               \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol10_get_optimizedCodeDebugInfo(This, pRetVal)                 \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol10_get_notReached(This, pRetVal)                             \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol10_get_interruptReturn(This, pRetVal)                        \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol10_get_farReturn(This, pRetVal)                              \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol10_get_isStatic(This, pRetVal)                               \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol10_get_hasDebugInfo(This, pRetVal)                           \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol10_get_isLTCG(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol10_get_isDataAligned(This, pRetVal)                          \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol10_get_hasSecurityChecks(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol10_get_compilerName(This, pRetVal)                           \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol10_get_hasAlloca(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol10_get_hasSetJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol10_get_hasLongJump(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol10_get_hasInlAsm(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol10_get_hasEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol10_get_hasSEH(This, pRetVal)                                 \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol10_get_hasEHa(This, pRetVal)                                 \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol10_get_isNaked(This, pRetVal)                                \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol10_get_isAggregated(This, pRetVal)                           \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol10_get_isSplitted(This, pRetVal)                             \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol10_get_container(This, pRetVal)                              \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol10_get_inlSpec(This, pRetVal)                                \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol10_get_noStackOrdering(This, pRetVal)                        \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol10_get_virtualBaseTableType(This, pRetVal)                   \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol10_get_hasManagedCode(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol10_get_isHotpatchable(This, pRetVal)                         \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol10_get_isCVTCIL(This, pRetVal)                               \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol10_get_isMSILNetmodule(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol10_get_isCTypes(This, pRetVal)                               \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol10_get_isStripped(This, pRetVal)                             \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol10_get_frontEndQFE(This, pRetVal)                            \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol10_get_backEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol10_get_wasInlined(This, pRetVal)                             \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol10_get_strictGSCheck(This, pRetVal)                          \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol10_get_isCxxReturnUdt(This, pRetVal)                         \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol10_get_isConstructorVirtualBase(This, pRetVal)               \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol10_get_RValueReference(This, pRetVal)                        \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol10_get_unmodifiedType(This, pRetVal)                         \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol10_get_framePointerPresent(This, pRetVal)                    \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol10_get_isSafeBuffers(This, pRetVal)                          \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol10_get_intrinsic(This, pRetVal)                              \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol10_get_sealed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol10_get_hfaFloat(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol10_get_hfaDouble(This, pRetVal)                              \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol10_get_liveRangeStartAddressSection(This, pRetVal)           \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol10_get_liveRangeStartAddressOffset(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol10_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)   \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol10_get_countLiveRanges(This, pRetVal)                        \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol10_get_liveRangeLength(This, pRetVal)                        \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol10_get_offsetInUdt(This, pRetVal)                            \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol10_get_paramBasePointerRegisterId(This, pRetVal)             \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol10_get_localBasePointerRegisterId(This, pRetVal)             \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol10_get_isLocationControlFlowDependent(This, pRetVal)         \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol10_get_stride(This, pRetVal)                                 \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol10_get_numberOfRows(This, pRetVal)                           \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol10_get_numberOfColumns(This, pRetVal)                        \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol10_get_isMatrixRowMajor(This, pRetVal)                       \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol10_get_numericProperties(This, cnt, pcnt, pProperties)       \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol10_get_modifierValues(This, cnt, pcnt, pModifiers)           \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol10_get_isReturnValue(This, pRetVal)                          \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol10_get_isOptimizedAway(This, pRetVal)                        \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol10_get_builtInKind(This, pRetVal)                            \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol10_get_registerType(This, pRetVal)                           \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol10_get_baseDataSlot(This, pRetVal)                           \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol10_get_baseDataOffset(This, pRetVal)                         \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol10_get_textureSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol10_get_samplerSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol10_get_uavSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol10_get_sizeInUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol10_get_memorySpaceKind(This, pRetVal)                        \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol10_get_unmodifiedTypeId(This, pRetVal)                       \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol10_get_subTypeId(This, pRetVal)                              \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol10_get_subType(This, pRetVal)                                \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol10_get_numberOfModifiers(This, pRetVal)                      \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol10_get_numberOfRegisterIndices(This, pRetVal)                \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol10_get_isHLSLData(This, pRetVal)                             \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol10_get_isPointerToDataMember(This, pRetVal)                  \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol10_get_isPointerToMemberFunction(This, pRetVal)              \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol10_get_isSingleInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol10_get_isMultipleInheritance(This, pRetVal)                  \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol10_get_isVirtualInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol10_get_restrictedType(This, pRetVal)                         \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol10_get_isPointerBasedOnSymbolValue(This, pRetVal)            \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol10_get_baseSymbol(This, pRetVal)                             \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol10_get_baseSymbolId(This, pRetVal)                           \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol10_get_objectFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol10_get_isAcceleratorGroupSharedLocal(This, pRetVal)          \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol10_get_isAcceleratorPointerTagLiveRange(This, pRetVal)       \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol10_get_isAcceleratorStubFunction(This, pRetVal)              \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol10_get_numberOfAcceleratorPointerTags(This, pRetVal)         \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol10_get_isSdl(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol10_get_isWinRTPointer(This, pRetVal)                         \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol10_get_isRefUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol10_get_isValueUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol10_get_isInterfaceUdt(This, pRetVal)                         \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol10_findInlineFramesByAddr(This, isect, offset, ppResult)     \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol10_findInlineFramesByRVA(This, rva, ppResult)                \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol10_findInlineFramesByVA(This, va, ppResult)                  \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol10_findInlineeLines(This, ppResult)                          \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol10_findInlineeLinesByAddr(This, isect, offset, length,       \
                                            ppResult)                          \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol10_findInlineeLinesByRVA(This, rva, length, ppResult)        \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol10_findInlineeLinesByVA(This, va, length, ppResult)          \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol10_findSymbolsForAcceleratorPointerTag(This, tagValue,       \
                                                         ppResult)             \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol10_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,  \
                                                              rva, ppResult)   \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol10_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags) \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol10_getSrcLineOnTypeDefn(This, ppResult)                      \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol10_get_isPGO(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol10_get_hasValidPGOCounts(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol10_get_isOptimizedForSpeed(This, pRetVal)                    \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol10_get_PGOEntryCount(This, pRetVal)                          \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol10_get_PGOEdgeCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol10_get_PGODynamicInstructionCount(This, pRetVal)             \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol10_get_staticSize(This, pRetVal)                             \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol10_get_finalLiveStaticSize(This, pRetVal)                    \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol10_get_phaseName(This, pRetVal)                              \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol10_get_hasControlFlowCheck(This, pRetVal)                    \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol10_get_constantExport(This, pRetVal)                         \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol10_get_dataExport(This, pRetVal)                             \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol10_get_privateExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol10_get_noNameExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol10_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)     \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol10_get_exportIsForwarder(This, pRetVal)                      \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol10_get_ordinal(This, pRetVal)                                \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol10_get_frameSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol10_get_exceptionHandlerAddressSection(This, pRetVal)         \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol10_get_exceptionHandlerAddressOffset(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol10_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal) \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol10_get_exceptionHandlerVirtualAddress(This, pRetVal)         \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol10_findInputAssemblyFile(This, ppResult)                     \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol10_get_characteristics(This, pRetVal)                        \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol10_get_coffGroup(This, pRetVal)                              \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol10_get_bindID(This, pRetVal)                                 \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol10_get_bindSpace(This, pRetVal)                              \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol10_get_bindSlot(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol10_get_isObjCClass(This, pRetVal)                            \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol10_get_isObjCCategory(This, pRetVal)                         \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol10_get_isObjCProtocol(This, pRetVal)                         \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol10_get_inlinee(This, pRetVal)                                \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol10_get_inlineeId(This, pRetVal)                              \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol10_get_noexcept(This, pRetVal)                               \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol10_get_hasAbsoluteAddress(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol10_get_isStaticMemberFunc(This, pRetVal)                     \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#define IDiaSymbol10_get_isSignRet(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSignRet(This, pRetVal))

#define IDiaSymbol10_get_coroutineKind(This, pRetVal)                          \
  ((This)->lpVtbl->get_coroutineKind(This, pRetVal))

#define IDiaSymbol10_get_associatedSymbolKind(This, pRetVal)                   \
  ((This)->lpVtbl->get_associatedSymbolKind(This, pRetVal))

#define IDiaSymbol10_get_associatedSymbolSection(This, pRetVal)                \
  ((This)->lpVtbl->get_associatedSymbolSection(This, pRetVal))

#define IDiaSymbol10_get_associatedSymbolOffset(This, pRetVal)                 \
  ((This)->lpVtbl->get_associatedSymbolOffset(This, pRetVal))

#define IDiaSymbol10_get_associatedSymbolRva(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolRva(This, pRetVal))

#define IDiaSymbol10_get_associatedSymbolAddr(This, pRetVal)                   \
  ((This)->lpVtbl->get_associatedSymbolAddr(This, pRetVal))

#define IDiaSymbol10_get_framePadSize(This, pRetVal)                           \
  ((This)->lpVtbl->get_framePadSize(This, pRetVal))

#define IDiaSymbol10_get_framePadOffset(This, pRetVal)                         \
  ((This)->lpVtbl->get_framePadOffset(This, pRetVal))

#define IDiaSymbol10_get_isRTCs(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isRTCs(This, pRetVal))

#define IDiaSymbol10_get_sourceLink(This, cb, pcb, pb)                         \
  ((This)->lpVtbl->get_sourceLink(This, cb, pcb, pb))

#endif /* COBJMACROS */

#endif /* C style interface */

  HRESULT STDMETHODCALLTYPE
  IDiaSymbol10_get_sourceLink_Proxy(IDiaSymbol10 *This,
                                    /* [in] */ DWORD cb,
                                    /* [out] */ DWORD *pcb,
                                    /* [size_is][out] */ BYTE *pb);

  void __RPC_STUB
  IDiaSymbol10_get_sourceLink_Stub(IRpcStubBuffer *This,
                                   IRpcChannelBuffer *_pRpcChannelBuffer,
                                   PRPC_MESSAGE _pRpcMessage,
                                   DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol10_INTERFACE_DEFINED__ */

  /* interface __MIDL_itf_dia2_0000_0032 */
  /* [local] */

  struct DiaTagValue
  {
    BYTE value[16];
    BYTE valueSizeBytes;
  };

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0032_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0032_v0_0_s_ifspec;

#ifndef __IDiaSymbol11_INTERFACE_DEFINED__
#define __IDiaSymbol11_INTERFACE_DEFINED__

  /* interface IDiaSymbol11 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSymbol11;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("b6f54fcd-05e3-433d-b305-b0c1437d2d16")
  IDiaSymbol11 : public IDiaSymbol10
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE get_discriminatedUnionTag(
        /* [out] */ IDiaSymbol * *ppTagType,
        /* [out] */ DWORD * pTagOffset,
        /* [out] */ struct DiaTagValue * pTagMask) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_tagRanges(
        /* [in] */ DWORD count,
        /* [out] */ DWORD * pcRangeValues,
        /* [size_is][out] */ struct DiaTagValue * rangeValues) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSymbol11Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSymbol11 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSymbol11 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSymbol11 *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symIndexId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_symTag)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParent)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_classParent)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_locationType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_registerId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_slot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_volatileType)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unalignedType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_access)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_libraryName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_platform)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_language)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_editAndContinueEnabled)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMajor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndMinor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_frontEndBuild)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMajor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndMinor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_backEndBuild)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_unused)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_thunkOrdinal)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_thisAdjust)(
        IDiaSymbol11 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_virtual)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intro)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_pure)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_callingConvention)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_value)(
        IDiaSymbol11 *This,
        /* [retval][out] */ VARIANT *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_token)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timeStamp)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_guid)(
        IDiaSymbol11 *This,
        /* [retval][out] */ GUID *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_symbolsFileName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_reference)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_count)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bitPosition)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_packed)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_constructor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_overloadedOperator)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_nested)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasNestedTypes)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAssignmentOperator)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasCastOperator)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_scoped)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseClass)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_indirectVirtualBaseClass)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBasePointerOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShape)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lexicalParentId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_classParentId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_typeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_arrayIndexTypeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualTableShapeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_function)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_managed)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_msil)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseDispIndex)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_undecoratedName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_age)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_signature)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerGenerated)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressTaken)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_rank)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lowerBound)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_upperBound)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lowerBoundId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_upperBoundId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_dataBytes)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD *pcbData,
        /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *findChildren)(
        IDiaSymbol11 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenEx)(
        IDiaSymbol11 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByAddr)(
        IDiaSymbol11 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByVA)(
        IDiaSymbol11 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findChildrenExByRVA)(
        IDiaSymbol11 *This,
        /* [in] */ enum SymTagEnum symtag,
        /* [in] */ LPCOLESTR name,
        /* [in] */ DWORD compareFlags,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetSection)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetRelativeVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_targetVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_machineType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_oemSymbolId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_types)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cTypes,
        /* [out] */ DWORD *pcTypes,
        /* [size_is][size_is][out] */ IDiaSymbol **pTypes);

    HRESULT(STDMETHODCALLTYPE *get_typeIds)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cTypeIds,
        /* [out] */ DWORD *pcTypeIds,
        /* [size_is][out] */ DWORD *pdwTypeIds);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectPointerType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_udtKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_undecoratedNameEx)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD undecorateOptions,
        /* [out] */ BSTR *name);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noReturn)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_customCallingConvention)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noInline)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_optimizedCodeDebugInfo)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notReached)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_interruptReturn)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_farReturn)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStatic)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasDebugInfo)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isLTCG)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isDataAligned)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasSecurityChecks)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_compilerName)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasAlloca)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSetJump)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasLongJump)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasInlAsm)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEH)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasSEH)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hasEHa)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isNaked)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAggregated)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSplitted)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_container)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlSpec)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noStackOrdering)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualBaseTableType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasManagedCode)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isHotpatchable)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCVTCIL)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMSILNetmodule)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isCTypes)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isStripped)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frontEndQFE)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_backEndQFE)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_wasInlined)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_strictGSCheck)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isCxxReturnUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isConstructorVirtualBase)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_RValueReference)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePointerPresent)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSafeBuffers)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_intrinsic)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sealed)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaFloat)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_hfaDouble)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressSection)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartAddressOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_countLiveRanges)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_liveRangeLength)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offsetInUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_paramBasePointerRegisterId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_localBasePointerRegisterId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isLocationControlFlowDependent)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_stride)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRows)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfColumns)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMatrixRowMajor)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_numericProperties)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pProperties);

    HRESULT(STDMETHODCALLTYPE *get_modifierValues)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ WORD *pModifiers);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isReturnValue)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedAway)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_builtInKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataSlot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseDataOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_textureSlot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_samplerSlot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uavSlot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sizeInUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_memorySpaceKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_unmodifiedTypeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subTypeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_subType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfModifiers)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfRegisterIndices)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isHLSLData)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToDataMember)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerToMemberFunction)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isSingleInheritance)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isMultipleInheritance)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isVirtualInheritance)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_restrictedType)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_baseSymbol)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_baseSymbolId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFileName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isAcceleratorStubFunction)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSdl)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isWinRTPointer)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRefUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isValueUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isInterfaceUdt)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByAddr)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByRVA)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineFramesByVA)(
        IDiaSymbol11 *This,
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLines)(
        IDiaSymbol11 *This,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByAddr)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD isect,
        /* [in] */ DWORD offset,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByRVA)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD rva,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findInlineeLinesByVA)(
        IDiaSymbol11 *This,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD length,
        /* [out] */ IDiaEnumLineNumbers **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD tagValue,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD tagValue,
        /* [in] */ DWORD rva,
        /* [out] */ IDiaEnumSymbols **ppResult);

    HRESULT(STDMETHODCALLTYPE *get_acceleratorPointerTags)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD cnt,
        /* [out] */ DWORD *pcnt,
        /* [size_is][out] */ DWORD *pPointerTags);

    HRESULT(STDMETHODCALLTYPE *getSrcLineOnTypeDefn)(
        IDiaSymbol11 *This,
        /* [out] */ IDiaLineNumber **ppResult);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isPGO)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasValidPGOCounts)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isOptimizedForSpeed)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEntryCount)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGOEdgeCount)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_PGODynamicInstructionCount)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_staticSize)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_finalLiveStaticSize)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_phaseName)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasControlFlowCheck)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_constantExport)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataExport)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_privateExport)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_noNameExport)(IDiaSymbol11 *This,
                                             /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exportIsForwarder)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_ordinal)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frameSize)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressSection)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *findInputAssemblyFile)(
        IDiaSymbol11 *This,
        /* [out] */ IDiaInputAssemblyFile **ppResult);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_characteristics)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_coffGroup)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindID)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSpace)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_bindSlot)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isObjCClass)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCCategory)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isObjCProtocol)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlinee)(
        IDiaSymbol11 *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_inlineeId)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_noexcept)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_hasAbsoluteAddress)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_isStaticMemberFunc)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isSignRet)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_coroutineKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolKind)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolSection)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolRva)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_associatedSymbolAddr)(
        IDiaSymbol11 *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadSize)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_framePadOffset)(
        IDiaSymbol11 *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_isRTCs)(
        IDiaSymbol11 *This,
        /* [retval][out] */ BOOL *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_sourceLink)(IDiaSymbol11 *This,
                                               /* [in] */ DWORD cb,
                                               /* [out] */ DWORD *pcb,
                                               /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *get_discriminatedUnionTag)(
        IDiaSymbol11 *This,
        /* [out] */ IDiaSymbol **ppTagType,
        /* [out] */ DWORD *pTagOffset,
        /* [out] */ struct DiaTagValue *pTagMask);

    HRESULT(STDMETHODCALLTYPE *get_tagRanges)(
        IDiaSymbol11 *This,
        /* [in] */ DWORD count,
        /* [out] */ DWORD *pcRangeValues,
        /* [size_is][out] */ struct DiaTagValue *rangeValues);

    END_INTERFACE
  } IDiaSymbol11Vtbl;

  interface IDiaSymbol11 { CONST_VTBL struct IDiaSymbol11Vtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSymbol11_QueryInterface(This, riid, ppvObject)                     \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSymbol11_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSymbol11_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSymbol11_get_symIndexId(This, pRetVal)                             \
  ((This)->lpVtbl->get_symIndexId(This, pRetVal))

#define IDiaSymbol11_get_symTag(This, pRetVal)                                 \
  ((This)->lpVtbl->get_symTag(This, pRetVal))

#define IDiaSymbol11_get_name(This, pRetVal)                                   \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaSymbol11_get_lexicalParent(This, pRetVal)                          \
  ((This)->lpVtbl->get_lexicalParent(This, pRetVal))

#define IDiaSymbol11_get_classParent(This, pRetVal)                            \
  ((This)->lpVtbl->get_classParent(This, pRetVal))

#define IDiaSymbol11_get_type(This, pRetVal)                                   \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaSymbol11_get_dataKind(This, pRetVal)                               \
  ((This)->lpVtbl->get_dataKind(This, pRetVal))

#define IDiaSymbol11_get_locationType(This, pRetVal)                           \
  ((This)->lpVtbl->get_locationType(This, pRetVal))

#define IDiaSymbol11_get_addressSection(This, pRetVal)                         \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSymbol11_get_addressOffset(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSymbol11_get_relativeVirtualAddress(This, pRetVal)                 \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSymbol11_get_virtualAddress(This, pRetVal)                         \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSymbol11_get_registerId(This, pRetVal)                             \
  ((This)->lpVtbl->get_registerId(This, pRetVal))

#define IDiaSymbol11_get_offset(This, pRetVal)                                 \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSymbol11_get_length(This, pRetVal)                                 \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSymbol11_get_slot(This, pRetVal)                                   \
  ((This)->lpVtbl->get_slot(This, pRetVal))

#define IDiaSymbol11_get_volatileType(This, pRetVal)                           \
  ((This)->lpVtbl->get_volatileType(This, pRetVal))

#define IDiaSymbol11_get_constType(This, pRetVal)                              \
  ((This)->lpVtbl->get_constType(This, pRetVal))

#define IDiaSymbol11_get_unalignedType(This, pRetVal)                          \
  ((This)->lpVtbl->get_unalignedType(This, pRetVal))

#define IDiaSymbol11_get_access(This, pRetVal)                                 \
  ((This)->lpVtbl->get_access(This, pRetVal))

#define IDiaSymbol11_get_libraryName(This, pRetVal)                            \
  ((This)->lpVtbl->get_libraryName(This, pRetVal))

#define IDiaSymbol11_get_platform(This, pRetVal)                               \
  ((This)->lpVtbl->get_platform(This, pRetVal))

#define IDiaSymbol11_get_language(This, pRetVal)                               \
  ((This)->lpVtbl->get_language(This, pRetVal))

#define IDiaSymbol11_get_editAndContinueEnabled(This, pRetVal)                 \
  ((This)->lpVtbl->get_editAndContinueEnabled(This, pRetVal))

#define IDiaSymbol11_get_frontEndMajor(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndMajor(This, pRetVal))

#define IDiaSymbol11_get_frontEndMinor(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndMinor(This, pRetVal))

#define IDiaSymbol11_get_frontEndBuild(This, pRetVal)                          \
  ((This)->lpVtbl->get_frontEndBuild(This, pRetVal))

#define IDiaSymbol11_get_backEndMajor(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndMajor(This, pRetVal))

#define IDiaSymbol11_get_backEndMinor(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndMinor(This, pRetVal))

#define IDiaSymbol11_get_backEndBuild(This, pRetVal)                           \
  ((This)->lpVtbl->get_backEndBuild(This, pRetVal))

#define IDiaSymbol11_get_sourceFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_sourceFileName(This, pRetVal))

#define IDiaSymbol11_get_unused(This, pRetVal)                                 \
  ((This)->lpVtbl->get_unused(This, pRetVal))

#define IDiaSymbol11_get_thunkOrdinal(This, pRetVal)                           \
  ((This)->lpVtbl->get_thunkOrdinal(This, pRetVal))

#define IDiaSymbol11_get_thisAdjust(This, pRetVal)                             \
  ((This)->lpVtbl->get_thisAdjust(This, pRetVal))

#define IDiaSymbol11_get_virtualBaseOffset(This, pRetVal)                      \
  ((This)->lpVtbl->get_virtualBaseOffset(This, pRetVal))

#define IDiaSymbol11_get_virtual(This, pRetVal)                                \
  ((This)->lpVtbl->get_virtual(This, pRetVal))

#define IDiaSymbol11_get_intro(This, pRetVal)                                  \
  ((This)->lpVtbl->get_intro(This, pRetVal))

#define IDiaSymbol11_get_pure(This, pRetVal)                                   \
  ((This)->lpVtbl->get_pure(This, pRetVal))

#define IDiaSymbol11_get_callingConvention(This, pRetVal)                      \
  ((This)->lpVtbl->get_callingConvention(This, pRetVal))

#define IDiaSymbol11_get_value(This, pRetVal)                                  \
  ((This)->lpVtbl->get_value(This, pRetVal))

#define IDiaSymbol11_get_baseType(This, pRetVal)                               \
  ((This)->lpVtbl->get_baseType(This, pRetVal))

#define IDiaSymbol11_get_token(This, pRetVal)                                  \
  ((This)->lpVtbl->get_token(This, pRetVal))

#define IDiaSymbol11_get_timeStamp(This, pRetVal)                              \
  ((This)->lpVtbl->get_timeStamp(This, pRetVal))

#define IDiaSymbol11_get_guid(This, pRetVal)                                   \
  ((This)->lpVtbl->get_guid(This, pRetVal))

#define IDiaSymbol11_get_symbolsFileName(This, pRetVal)                        \
  ((This)->lpVtbl->get_symbolsFileName(This, pRetVal))

#define IDiaSymbol11_get_reference(This, pRetVal)                              \
  ((This)->lpVtbl->get_reference(This, pRetVal))

#define IDiaSymbol11_get_count(This, pRetVal)                                  \
  ((This)->lpVtbl->get_count(This, pRetVal))

#define IDiaSymbol11_get_bitPosition(This, pRetVal)                            \
  ((This)->lpVtbl->get_bitPosition(This, pRetVal))

#define IDiaSymbol11_get_arrayIndexType(This, pRetVal)                         \
  ((This)->lpVtbl->get_arrayIndexType(This, pRetVal))

#define IDiaSymbol11_get_packed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_packed(This, pRetVal))

#define IDiaSymbol11_get_constructor(This, pRetVal)                            \
  ((This)->lpVtbl->get_constructor(This, pRetVal))

#define IDiaSymbol11_get_overloadedOperator(This, pRetVal)                     \
  ((This)->lpVtbl->get_overloadedOperator(This, pRetVal))

#define IDiaSymbol11_get_nested(This, pRetVal)                                 \
  ((This)->lpVtbl->get_nested(This, pRetVal))

#define IDiaSymbol11_get_hasNestedTypes(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasNestedTypes(This, pRetVal))

#define IDiaSymbol11_get_hasAssignmentOperator(This, pRetVal)                  \
  ((This)->lpVtbl->get_hasAssignmentOperator(This, pRetVal))

#define IDiaSymbol11_get_hasCastOperator(This, pRetVal)                        \
  ((This)->lpVtbl->get_hasCastOperator(This, pRetVal))

#define IDiaSymbol11_get_scoped(This, pRetVal)                                 \
  ((This)->lpVtbl->get_scoped(This, pRetVal))

#define IDiaSymbol11_get_virtualBaseClass(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualBaseClass(This, pRetVal))

#define IDiaSymbol11_get_indirectVirtualBaseClass(This, pRetVal)               \
  ((This)->lpVtbl->get_indirectVirtualBaseClass(This, pRetVal))

#define IDiaSymbol11_get_virtualBasePointerOffset(This, pRetVal)               \
  ((This)->lpVtbl->get_virtualBasePointerOffset(This, pRetVal))

#define IDiaSymbol11_get_virtualTableShape(This, pRetVal)                      \
  ((This)->lpVtbl->get_virtualTableShape(This, pRetVal))

#define IDiaSymbol11_get_lexicalParentId(This, pRetVal)                        \
  ((This)->lpVtbl->get_lexicalParentId(This, pRetVal))

#define IDiaSymbol11_get_classParentId(This, pRetVal)                          \
  ((This)->lpVtbl->get_classParentId(This, pRetVal))

#define IDiaSymbol11_get_typeId(This, pRetVal)                                 \
  ((This)->lpVtbl->get_typeId(This, pRetVal))

#define IDiaSymbol11_get_arrayIndexTypeId(This, pRetVal)                       \
  ((This)->lpVtbl->get_arrayIndexTypeId(This, pRetVal))

#define IDiaSymbol11_get_virtualTableShapeId(This, pRetVal)                    \
  ((This)->lpVtbl->get_virtualTableShapeId(This, pRetVal))

#define IDiaSymbol11_get_code(This, pRetVal)                                   \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSymbol11_get_function(This, pRetVal)                               \
  ((This)->lpVtbl->get_function(This, pRetVal))

#define IDiaSymbol11_get_managed(This, pRetVal)                                \
  ((This)->lpVtbl->get_managed(This, pRetVal))

#define IDiaSymbol11_get_msil(This, pRetVal)                                   \
  ((This)->lpVtbl->get_msil(This, pRetVal))

#define IDiaSymbol11_get_virtualBaseDispIndex(This, pRetVal)                   \
  ((This)->lpVtbl->get_virtualBaseDispIndex(This, pRetVal))

#define IDiaSymbol11_get_undecoratedName(This, pRetVal)                        \
  ((This)->lpVtbl->get_undecoratedName(This, pRetVal))

#define IDiaSymbol11_get_age(This, pRetVal)                                    \
  ((This)->lpVtbl->get_age(This, pRetVal))

#define IDiaSymbol11_get_signature(This, pRetVal)                              \
  ((This)->lpVtbl->get_signature(This, pRetVal))

#define IDiaSymbol11_get_compilerGenerated(This, pRetVal)                      \
  ((This)->lpVtbl->get_compilerGenerated(This, pRetVal))

#define IDiaSymbol11_get_addressTaken(This, pRetVal)                           \
  ((This)->lpVtbl->get_addressTaken(This, pRetVal))

#define IDiaSymbol11_get_rank(This, pRetVal)                                   \
  ((This)->lpVtbl->get_rank(This, pRetVal))

#define IDiaSymbol11_get_lowerBound(This, pRetVal)                             \
  ((This)->lpVtbl->get_lowerBound(This, pRetVal))

#define IDiaSymbol11_get_upperBound(This, pRetVal)                             \
  ((This)->lpVtbl->get_upperBound(This, pRetVal))

#define IDiaSymbol11_get_lowerBoundId(This, pRetVal)                           \
  ((This)->lpVtbl->get_lowerBoundId(This, pRetVal))

#define IDiaSymbol11_get_upperBoundId(This, pRetVal)                           \
  ((This)->lpVtbl->get_upperBoundId(This, pRetVal))

#define IDiaSymbol11_get_dataBytes(This, cbData, pcbData, pbData)              \
  ((This)->lpVtbl->get_dataBytes(This, cbData, pcbData, pbData))

#define IDiaSymbol11_findChildren(This, symtag, name, compareFlags, ppResult)  \
  ((This)->lpVtbl->findChildren(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol11_findChildrenEx(This, symtag, name, compareFlags,          \
                                    ppResult)                                  \
  ((This)->lpVtbl->findChildrenEx(This, symtag, name, compareFlags, ppResult))

#define IDiaSymbol11_findChildrenExByAddr(This, symtag, name, compareFlags,    \
                                          isect, offset, ppResult)             \
  ((This)->lpVtbl->findChildrenExByAddr(This, symtag, name, compareFlags,      \
                                        isect, offset, ppResult))

#define IDiaSymbol11_findChildrenExByVA(This, symtag, name, compareFlags, va,  \
                                        ppResult)                              \
  ((This)->lpVtbl->findChildrenExByVA(This, symtag, name, compareFlags, va,    \
                                      ppResult))

#define IDiaSymbol11_findChildrenExByRVA(This, symtag, name, compareFlags,     \
                                         rva, ppResult)                        \
  ((This)->lpVtbl->findChildrenExByRVA(This, symtag, name, compareFlags, rva,  \
                                       ppResult))

#define IDiaSymbol11_get_targetSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_targetSection(This, pRetVal))

#define IDiaSymbol11_get_targetOffset(This, pRetVal)                           \
  ((This)->lpVtbl->get_targetOffset(This, pRetVal))

#define IDiaSymbol11_get_targetRelativeVirtualAddress(This, pRetVal)           \
  ((This)->lpVtbl->get_targetRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol11_get_targetVirtualAddress(This, pRetVal)                   \
  ((This)->lpVtbl->get_targetVirtualAddress(This, pRetVal))

#define IDiaSymbol11_get_machineType(This, pRetVal)                            \
  ((This)->lpVtbl->get_machineType(This, pRetVal))

#define IDiaSymbol11_get_oemId(This, pRetVal)                                  \
  ((This)->lpVtbl->get_oemId(This, pRetVal))

#define IDiaSymbol11_get_oemSymbolId(This, pRetVal)                            \
  ((This)->lpVtbl->get_oemSymbolId(This, pRetVal))

#define IDiaSymbol11_get_types(This, cTypes, pcTypes, pTypes)                  \
  ((This)->lpVtbl->get_types(This, cTypes, pcTypes, pTypes))

#define IDiaSymbol11_get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds)        \
  ((This)->lpVtbl->get_typeIds(This, cTypeIds, pcTypeIds, pdwTypeIds))

#define IDiaSymbol11_get_objectPointerType(This, pRetVal)                      \
  ((This)->lpVtbl->get_objectPointerType(This, pRetVal))

#define IDiaSymbol11_get_udtKind(This, pRetVal)                                \
  ((This)->lpVtbl->get_udtKind(This, pRetVal))

#define IDiaSymbol11_get_undecoratedNameEx(This, undecorateOptions, name)      \
  ((This)->lpVtbl->get_undecoratedNameEx(This, undecorateOptions, name))

#define IDiaSymbol11_get_noReturn(This, pRetVal)                               \
  ((This)->lpVtbl->get_noReturn(This, pRetVal))

#define IDiaSymbol11_get_customCallingConvention(This, pRetVal)                \
  ((This)->lpVtbl->get_customCallingConvention(This, pRetVal))

#define IDiaSymbol11_get_noInline(This, pRetVal)                               \
  ((This)->lpVtbl->get_noInline(This, pRetVal))

#define IDiaSymbol11_get_optimizedCodeDebugInfo(This, pRetVal)                 \
  ((This)->lpVtbl->get_optimizedCodeDebugInfo(This, pRetVal))

#define IDiaSymbol11_get_notReached(This, pRetVal)                             \
  ((This)->lpVtbl->get_notReached(This, pRetVal))

#define IDiaSymbol11_get_interruptReturn(This, pRetVal)                        \
  ((This)->lpVtbl->get_interruptReturn(This, pRetVal))

#define IDiaSymbol11_get_farReturn(This, pRetVal)                              \
  ((This)->lpVtbl->get_farReturn(This, pRetVal))

#define IDiaSymbol11_get_isStatic(This, pRetVal)                               \
  ((This)->lpVtbl->get_isStatic(This, pRetVal))

#define IDiaSymbol11_get_hasDebugInfo(This, pRetVal)                           \
  ((This)->lpVtbl->get_hasDebugInfo(This, pRetVal))

#define IDiaSymbol11_get_isLTCG(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isLTCG(This, pRetVal))

#define IDiaSymbol11_get_isDataAligned(This, pRetVal)                          \
  ((This)->lpVtbl->get_isDataAligned(This, pRetVal))

#define IDiaSymbol11_get_hasSecurityChecks(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasSecurityChecks(This, pRetVal))

#define IDiaSymbol11_get_compilerName(This, pRetVal)                           \
  ((This)->lpVtbl->get_compilerName(This, pRetVal))

#define IDiaSymbol11_get_hasAlloca(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasAlloca(This, pRetVal))

#define IDiaSymbol11_get_hasSetJump(This, pRetVal)                             \
  ((This)->lpVtbl->get_hasSetJump(This, pRetVal))

#define IDiaSymbol11_get_hasLongJump(This, pRetVal)                            \
  ((This)->lpVtbl->get_hasLongJump(This, pRetVal))

#define IDiaSymbol11_get_hasInlAsm(This, pRetVal)                              \
  ((This)->lpVtbl->get_hasInlAsm(This, pRetVal))

#define IDiaSymbol11_get_hasEH(This, pRetVal)                                  \
  ((This)->lpVtbl->get_hasEH(This, pRetVal))

#define IDiaSymbol11_get_hasSEH(This, pRetVal)                                 \
  ((This)->lpVtbl->get_hasSEH(This, pRetVal))

#define IDiaSymbol11_get_hasEHa(This, pRetVal)                                 \
  ((This)->lpVtbl->get_hasEHa(This, pRetVal))

#define IDiaSymbol11_get_isNaked(This, pRetVal)                                \
  ((This)->lpVtbl->get_isNaked(This, pRetVal))

#define IDiaSymbol11_get_isAggregated(This, pRetVal)                           \
  ((This)->lpVtbl->get_isAggregated(This, pRetVal))

#define IDiaSymbol11_get_isSplitted(This, pRetVal)                             \
  ((This)->lpVtbl->get_isSplitted(This, pRetVal))

#define IDiaSymbol11_get_container(This, pRetVal)                              \
  ((This)->lpVtbl->get_container(This, pRetVal))

#define IDiaSymbol11_get_inlSpec(This, pRetVal)                                \
  ((This)->lpVtbl->get_inlSpec(This, pRetVal))

#define IDiaSymbol11_get_noStackOrdering(This, pRetVal)                        \
  ((This)->lpVtbl->get_noStackOrdering(This, pRetVal))

#define IDiaSymbol11_get_virtualBaseTableType(This, pRetVal)                   \
  ((This)->lpVtbl->get_virtualBaseTableType(This, pRetVal))

#define IDiaSymbol11_get_hasManagedCode(This, pRetVal)                         \
  ((This)->lpVtbl->get_hasManagedCode(This, pRetVal))

#define IDiaSymbol11_get_isHotpatchable(This, pRetVal)                         \
  ((This)->lpVtbl->get_isHotpatchable(This, pRetVal))

#define IDiaSymbol11_get_isCVTCIL(This, pRetVal)                               \
  ((This)->lpVtbl->get_isCVTCIL(This, pRetVal))

#define IDiaSymbol11_get_isMSILNetmodule(This, pRetVal)                        \
  ((This)->lpVtbl->get_isMSILNetmodule(This, pRetVal))

#define IDiaSymbol11_get_isCTypes(This, pRetVal)                               \
  ((This)->lpVtbl->get_isCTypes(This, pRetVal))

#define IDiaSymbol11_get_isStripped(This, pRetVal)                             \
  ((This)->lpVtbl->get_isStripped(This, pRetVal))

#define IDiaSymbol11_get_frontEndQFE(This, pRetVal)                            \
  ((This)->lpVtbl->get_frontEndQFE(This, pRetVal))

#define IDiaSymbol11_get_backEndQFE(This, pRetVal)                             \
  ((This)->lpVtbl->get_backEndQFE(This, pRetVal))

#define IDiaSymbol11_get_wasInlined(This, pRetVal)                             \
  ((This)->lpVtbl->get_wasInlined(This, pRetVal))

#define IDiaSymbol11_get_strictGSCheck(This, pRetVal)                          \
  ((This)->lpVtbl->get_strictGSCheck(This, pRetVal))

#define IDiaSymbol11_get_isCxxReturnUdt(This, pRetVal)                         \
  ((This)->lpVtbl->get_isCxxReturnUdt(This, pRetVal))

#define IDiaSymbol11_get_isConstructorVirtualBase(This, pRetVal)               \
  ((This)->lpVtbl->get_isConstructorVirtualBase(This, pRetVal))

#define IDiaSymbol11_get_RValueReference(This, pRetVal)                        \
  ((This)->lpVtbl->get_RValueReference(This, pRetVal))

#define IDiaSymbol11_get_unmodifiedType(This, pRetVal)                         \
  ((This)->lpVtbl->get_unmodifiedType(This, pRetVal))

#define IDiaSymbol11_get_framePointerPresent(This, pRetVal)                    \
  ((This)->lpVtbl->get_framePointerPresent(This, pRetVal))

#define IDiaSymbol11_get_isSafeBuffers(This, pRetVal)                          \
  ((This)->lpVtbl->get_isSafeBuffers(This, pRetVal))

#define IDiaSymbol11_get_intrinsic(This, pRetVal)                              \
  ((This)->lpVtbl->get_intrinsic(This, pRetVal))

#define IDiaSymbol11_get_sealed(This, pRetVal)                                 \
  ((This)->lpVtbl->get_sealed(This, pRetVal))

#define IDiaSymbol11_get_hfaFloat(This, pRetVal)                               \
  ((This)->lpVtbl->get_hfaFloat(This, pRetVal))

#define IDiaSymbol11_get_hfaDouble(This, pRetVal)                              \
  ((This)->lpVtbl->get_hfaDouble(This, pRetVal))

#define IDiaSymbol11_get_liveRangeStartAddressSection(This, pRetVal)           \
  ((This)->lpVtbl->get_liveRangeStartAddressSection(This, pRetVal))

#define IDiaSymbol11_get_liveRangeStartAddressOffset(This, pRetVal)            \
  ((This)->lpVtbl->get_liveRangeStartAddressOffset(This, pRetVal))

#define IDiaSymbol11_get_liveRangeStartRelativeVirtualAddress(This, pRetVal)   \
  ((This)->lpVtbl->get_liveRangeStartRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol11_get_countLiveRanges(This, pRetVal)                        \
  ((This)->lpVtbl->get_countLiveRanges(This, pRetVal))

#define IDiaSymbol11_get_liveRangeLength(This, pRetVal)                        \
  ((This)->lpVtbl->get_liveRangeLength(This, pRetVal))

#define IDiaSymbol11_get_offsetInUdt(This, pRetVal)                            \
  ((This)->lpVtbl->get_offsetInUdt(This, pRetVal))

#define IDiaSymbol11_get_paramBasePointerRegisterId(This, pRetVal)             \
  ((This)->lpVtbl->get_paramBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol11_get_localBasePointerRegisterId(This, pRetVal)             \
  ((This)->lpVtbl->get_localBasePointerRegisterId(This, pRetVal))

#define IDiaSymbol11_get_isLocationControlFlowDependent(This, pRetVal)         \
  ((This)->lpVtbl->get_isLocationControlFlowDependent(This, pRetVal))

#define IDiaSymbol11_get_stride(This, pRetVal)                                 \
  ((This)->lpVtbl->get_stride(This, pRetVal))

#define IDiaSymbol11_get_numberOfRows(This, pRetVal)                           \
  ((This)->lpVtbl->get_numberOfRows(This, pRetVal))

#define IDiaSymbol11_get_numberOfColumns(This, pRetVal)                        \
  ((This)->lpVtbl->get_numberOfColumns(This, pRetVal))

#define IDiaSymbol11_get_isMatrixRowMajor(This, pRetVal)                       \
  ((This)->lpVtbl->get_isMatrixRowMajor(This, pRetVal))

#define IDiaSymbol11_get_numericProperties(This, cnt, pcnt, pProperties)       \
  ((This)->lpVtbl->get_numericProperties(This, cnt, pcnt, pProperties))

#define IDiaSymbol11_get_modifierValues(This, cnt, pcnt, pModifiers)           \
  ((This)->lpVtbl->get_modifierValues(This, cnt, pcnt, pModifiers))

#define IDiaSymbol11_get_isReturnValue(This, pRetVal)                          \
  ((This)->lpVtbl->get_isReturnValue(This, pRetVal))

#define IDiaSymbol11_get_isOptimizedAway(This, pRetVal)                        \
  ((This)->lpVtbl->get_isOptimizedAway(This, pRetVal))

#define IDiaSymbol11_get_builtInKind(This, pRetVal)                            \
  ((This)->lpVtbl->get_builtInKind(This, pRetVal))

#define IDiaSymbol11_get_registerType(This, pRetVal)                           \
  ((This)->lpVtbl->get_registerType(This, pRetVal))

#define IDiaSymbol11_get_baseDataSlot(This, pRetVal)                           \
  ((This)->lpVtbl->get_baseDataSlot(This, pRetVal))

#define IDiaSymbol11_get_baseDataOffset(This, pRetVal)                         \
  ((This)->lpVtbl->get_baseDataOffset(This, pRetVal))

#define IDiaSymbol11_get_textureSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_textureSlot(This, pRetVal))

#define IDiaSymbol11_get_samplerSlot(This, pRetVal)                            \
  ((This)->lpVtbl->get_samplerSlot(This, pRetVal))

#define IDiaSymbol11_get_uavSlot(This, pRetVal)                                \
  ((This)->lpVtbl->get_uavSlot(This, pRetVal))

#define IDiaSymbol11_get_sizeInUdt(This, pRetVal)                              \
  ((This)->lpVtbl->get_sizeInUdt(This, pRetVal))

#define IDiaSymbol11_get_memorySpaceKind(This, pRetVal)                        \
  ((This)->lpVtbl->get_memorySpaceKind(This, pRetVal))

#define IDiaSymbol11_get_unmodifiedTypeId(This, pRetVal)                       \
  ((This)->lpVtbl->get_unmodifiedTypeId(This, pRetVal))

#define IDiaSymbol11_get_subTypeId(This, pRetVal)                              \
  ((This)->lpVtbl->get_subTypeId(This, pRetVal))

#define IDiaSymbol11_get_subType(This, pRetVal)                                \
  ((This)->lpVtbl->get_subType(This, pRetVal))

#define IDiaSymbol11_get_numberOfModifiers(This, pRetVal)                      \
  ((This)->lpVtbl->get_numberOfModifiers(This, pRetVal))

#define IDiaSymbol11_get_numberOfRegisterIndices(This, pRetVal)                \
  ((This)->lpVtbl->get_numberOfRegisterIndices(This, pRetVal))

#define IDiaSymbol11_get_isHLSLData(This, pRetVal)                             \
  ((This)->lpVtbl->get_isHLSLData(This, pRetVal))

#define IDiaSymbol11_get_isPointerToDataMember(This, pRetVal)                  \
  ((This)->lpVtbl->get_isPointerToDataMember(This, pRetVal))

#define IDiaSymbol11_get_isPointerToMemberFunction(This, pRetVal)              \
  ((This)->lpVtbl->get_isPointerToMemberFunction(This, pRetVal))

#define IDiaSymbol11_get_isSingleInheritance(This, pRetVal)                    \
  ((This)->lpVtbl->get_isSingleInheritance(This, pRetVal))

#define IDiaSymbol11_get_isMultipleInheritance(This, pRetVal)                  \
  ((This)->lpVtbl->get_isMultipleInheritance(This, pRetVal))

#define IDiaSymbol11_get_isVirtualInheritance(This, pRetVal)                   \
  ((This)->lpVtbl->get_isVirtualInheritance(This, pRetVal))

#define IDiaSymbol11_get_restrictedType(This, pRetVal)                         \
  ((This)->lpVtbl->get_restrictedType(This, pRetVal))

#define IDiaSymbol11_get_isPointerBasedOnSymbolValue(This, pRetVal)            \
  ((This)->lpVtbl->get_isPointerBasedOnSymbolValue(This, pRetVal))

#define IDiaSymbol11_get_baseSymbol(This, pRetVal)                             \
  ((This)->lpVtbl->get_baseSymbol(This, pRetVal))

#define IDiaSymbol11_get_baseSymbolId(This, pRetVal)                           \
  ((This)->lpVtbl->get_baseSymbolId(This, pRetVal))

#define IDiaSymbol11_get_objectFileName(This, pRetVal)                         \
  ((This)->lpVtbl->get_objectFileName(This, pRetVal))

#define IDiaSymbol11_get_isAcceleratorGroupSharedLocal(This, pRetVal)          \
  ((This)->lpVtbl->get_isAcceleratorGroupSharedLocal(This, pRetVal))

#define IDiaSymbol11_get_isAcceleratorPointerTagLiveRange(This, pRetVal)       \
  ((This)->lpVtbl->get_isAcceleratorPointerTagLiveRange(This, pRetVal))

#define IDiaSymbol11_get_isAcceleratorStubFunction(This, pRetVal)              \
  ((This)->lpVtbl->get_isAcceleratorStubFunction(This, pRetVal))

#define IDiaSymbol11_get_numberOfAcceleratorPointerTags(This, pRetVal)         \
  ((This)->lpVtbl->get_numberOfAcceleratorPointerTags(This, pRetVal))

#define IDiaSymbol11_get_isSdl(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isSdl(This, pRetVal))

#define IDiaSymbol11_get_isWinRTPointer(This, pRetVal)                         \
  ((This)->lpVtbl->get_isWinRTPointer(This, pRetVal))

#define IDiaSymbol11_get_isRefUdt(This, pRetVal)                               \
  ((This)->lpVtbl->get_isRefUdt(This, pRetVal))

#define IDiaSymbol11_get_isValueUdt(This, pRetVal)                             \
  ((This)->lpVtbl->get_isValueUdt(This, pRetVal))

#define IDiaSymbol11_get_isInterfaceUdt(This, pRetVal)                         \
  ((This)->lpVtbl->get_isInterfaceUdt(This, pRetVal))

#define IDiaSymbol11_findInlineFramesByAddr(This, isect, offset, ppResult)     \
  ((This)->lpVtbl->findInlineFramesByAddr(This, isect, offset, ppResult))

#define IDiaSymbol11_findInlineFramesByRVA(This, rva, ppResult)                \
  ((This)->lpVtbl->findInlineFramesByRVA(This, rva, ppResult))

#define IDiaSymbol11_findInlineFramesByVA(This, va, ppResult)                  \
  ((This)->lpVtbl->findInlineFramesByVA(This, va, ppResult))

#define IDiaSymbol11_findInlineeLines(This, ppResult)                          \
  ((This)->lpVtbl->findInlineeLines(This, ppResult))

#define IDiaSymbol11_findInlineeLinesByAddr(This, isect, offset, length,       \
                                            ppResult)                          \
  ((This)->lpVtbl->findInlineeLinesByAddr(This, isect, offset, length,         \
                                          ppResult))

#define IDiaSymbol11_findInlineeLinesByRVA(This, rva, length, ppResult)        \
  ((This)->lpVtbl->findInlineeLinesByRVA(This, rva, length, ppResult))

#define IDiaSymbol11_findInlineeLinesByVA(This, va, length, ppResult)          \
  ((This)->lpVtbl->findInlineeLinesByVA(This, va, length, ppResult))

#define IDiaSymbol11_findSymbolsForAcceleratorPointerTag(This, tagValue,       \
                                                         ppResult)             \
  ((This)->lpVtbl->findSymbolsForAcceleratorPointerTag(This, tagValue,         \
                                                       ppResult))

#define IDiaSymbol11_findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,  \
                                                              rva, ppResult)   \
  ((This)->lpVtbl->findSymbolsByRVAForAcceleratorPointerTag(This, tagValue,    \
                                                            rva, ppResult))

#define IDiaSymbol11_get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags) \
  ((This)->lpVtbl->get_acceleratorPointerTags(This, cnt, pcnt, pPointerTags))

#define IDiaSymbol11_getSrcLineOnTypeDefn(This, ppResult)                      \
  ((This)->lpVtbl->getSrcLineOnTypeDefn(This, ppResult))

#define IDiaSymbol11_get_isPGO(This, pRetVal)                                  \
  ((This)->lpVtbl->get_isPGO(This, pRetVal))

#define IDiaSymbol11_get_hasValidPGOCounts(This, pRetVal)                      \
  ((This)->lpVtbl->get_hasValidPGOCounts(This, pRetVal))

#define IDiaSymbol11_get_isOptimizedForSpeed(This, pRetVal)                    \
  ((This)->lpVtbl->get_isOptimizedForSpeed(This, pRetVal))

#define IDiaSymbol11_get_PGOEntryCount(This, pRetVal)                          \
  ((This)->lpVtbl->get_PGOEntryCount(This, pRetVal))

#define IDiaSymbol11_get_PGOEdgeCount(This, pRetVal)                           \
  ((This)->lpVtbl->get_PGOEdgeCount(This, pRetVal))

#define IDiaSymbol11_get_PGODynamicInstructionCount(This, pRetVal)             \
  ((This)->lpVtbl->get_PGODynamicInstructionCount(This, pRetVal))

#define IDiaSymbol11_get_staticSize(This, pRetVal)                             \
  ((This)->lpVtbl->get_staticSize(This, pRetVal))

#define IDiaSymbol11_get_finalLiveStaticSize(This, pRetVal)                    \
  ((This)->lpVtbl->get_finalLiveStaticSize(This, pRetVal))

#define IDiaSymbol11_get_phaseName(This, pRetVal)                              \
  ((This)->lpVtbl->get_phaseName(This, pRetVal))

#define IDiaSymbol11_get_hasControlFlowCheck(This, pRetVal)                    \
  ((This)->lpVtbl->get_hasControlFlowCheck(This, pRetVal))

#define IDiaSymbol11_get_constantExport(This, pRetVal)                         \
  ((This)->lpVtbl->get_constantExport(This, pRetVal))

#define IDiaSymbol11_get_dataExport(This, pRetVal)                             \
  ((This)->lpVtbl->get_dataExport(This, pRetVal))

#define IDiaSymbol11_get_privateExport(This, pRetVal)                          \
  ((This)->lpVtbl->get_privateExport(This, pRetVal))

#define IDiaSymbol11_get_noNameExport(This, pRetVal)                           \
  ((This)->lpVtbl->get_noNameExport(This, pRetVal))

#define IDiaSymbol11_get_exportHasExplicitlyAssignedOrdinal(This, pRetVal)     \
  ((This)->lpVtbl->get_exportHasExplicitlyAssignedOrdinal(This, pRetVal))

#define IDiaSymbol11_get_exportIsForwarder(This, pRetVal)                      \
  ((This)->lpVtbl->get_exportIsForwarder(This, pRetVal))

#define IDiaSymbol11_get_ordinal(This, pRetVal)                                \
  ((This)->lpVtbl->get_ordinal(This, pRetVal))

#define IDiaSymbol11_get_frameSize(This, pRetVal)                              \
  ((This)->lpVtbl->get_frameSize(This, pRetVal))

#define IDiaSymbol11_get_exceptionHandlerAddressSection(This, pRetVal)         \
  ((This)->lpVtbl->get_exceptionHandlerAddressSection(This, pRetVal))

#define IDiaSymbol11_get_exceptionHandlerAddressOffset(This, pRetVal)          \
  ((This)->lpVtbl->get_exceptionHandlerAddressOffset(This, pRetVal))

#define IDiaSymbol11_get_exceptionHandlerRelativeVirtualAddress(This, pRetVal) \
  ((This)->lpVtbl->get_exceptionHandlerRelativeVirtualAddress(This, pRetVal))

#define IDiaSymbol11_get_exceptionHandlerVirtualAddress(This, pRetVal)         \
  ((This)->lpVtbl->get_exceptionHandlerVirtualAddress(This, pRetVal))

#define IDiaSymbol11_findInputAssemblyFile(This, ppResult)                     \
  ((This)->lpVtbl->findInputAssemblyFile(This, ppResult))

#define IDiaSymbol11_get_characteristics(This, pRetVal)                        \
  ((This)->lpVtbl->get_characteristics(This, pRetVal))

#define IDiaSymbol11_get_coffGroup(This, pRetVal)                              \
  ((This)->lpVtbl->get_coffGroup(This, pRetVal))

#define IDiaSymbol11_get_bindID(This, pRetVal)                                 \
  ((This)->lpVtbl->get_bindID(This, pRetVal))

#define IDiaSymbol11_get_bindSpace(This, pRetVal)                              \
  ((This)->lpVtbl->get_bindSpace(This, pRetVal))

#define IDiaSymbol11_get_bindSlot(This, pRetVal)                               \
  ((This)->lpVtbl->get_bindSlot(This, pRetVal))

#define IDiaSymbol11_get_isObjCClass(This, pRetVal)                            \
  ((This)->lpVtbl->get_isObjCClass(This, pRetVal))

#define IDiaSymbol11_get_isObjCCategory(This, pRetVal)                         \
  ((This)->lpVtbl->get_isObjCCategory(This, pRetVal))

#define IDiaSymbol11_get_isObjCProtocol(This, pRetVal)                         \
  ((This)->lpVtbl->get_isObjCProtocol(This, pRetVal))

#define IDiaSymbol11_get_inlinee(This, pRetVal)                                \
  ((This)->lpVtbl->get_inlinee(This, pRetVal))

#define IDiaSymbol11_get_inlineeId(This, pRetVal)                              \
  ((This)->lpVtbl->get_inlineeId(This, pRetVal))

#define IDiaSymbol11_get_noexcept(This, pRetVal)                               \
  ((This)->lpVtbl->get_noexcept(This, pRetVal))

#define IDiaSymbol11_get_hasAbsoluteAddress(This, pRetVal)                     \
  ((This)->lpVtbl->get_hasAbsoluteAddress(This, pRetVal))

#define IDiaSymbol11_get_isStaticMemberFunc(This, pRetVal)                     \
  ((This)->lpVtbl->get_isStaticMemberFunc(This, pRetVal))

#define IDiaSymbol11_get_isSignRet(This, pRetVal)                              \
  ((This)->lpVtbl->get_isSignRet(This, pRetVal))

#define IDiaSymbol11_get_coroutineKind(This, pRetVal)                          \
  ((This)->lpVtbl->get_coroutineKind(This, pRetVal))

#define IDiaSymbol11_get_associatedSymbolKind(This, pRetVal)                   \
  ((This)->lpVtbl->get_associatedSymbolKind(This, pRetVal))

#define IDiaSymbol11_get_associatedSymbolSection(This, pRetVal)                \
  ((This)->lpVtbl->get_associatedSymbolSection(This, pRetVal))

#define IDiaSymbol11_get_associatedSymbolOffset(This, pRetVal)                 \
  ((This)->lpVtbl->get_associatedSymbolOffset(This, pRetVal))

#define IDiaSymbol11_get_associatedSymbolRva(This, pRetVal)                    \
  ((This)->lpVtbl->get_associatedSymbolRva(This, pRetVal))

#define IDiaSymbol11_get_associatedSymbolAddr(This, pRetVal)                   \
  ((This)->lpVtbl->get_associatedSymbolAddr(This, pRetVal))

#define IDiaSymbol11_get_framePadSize(This, pRetVal)                           \
  ((This)->lpVtbl->get_framePadSize(This, pRetVal))

#define IDiaSymbol11_get_framePadOffset(This, pRetVal)                         \
  ((This)->lpVtbl->get_framePadOffset(This, pRetVal))

#define IDiaSymbol11_get_isRTCs(This, pRetVal)                                 \
  ((This)->lpVtbl->get_isRTCs(This, pRetVal))

#define IDiaSymbol11_get_sourceLink(This, cb, pcb, pb)                         \
  ((This)->lpVtbl->get_sourceLink(This, cb, pcb, pb))

#define IDiaSymbol11_get_discriminatedUnionTag(This, ppTagType, pTagOffset,    \
                                               pTagMask)                       \
  ((This)->lpVtbl->get_discriminatedUnionTag(This, ppTagType, pTagOffset,      \
                                             pTagMask))

#define IDiaSymbol11_get_tagRanges(This, count, pcRangeValues, rangeValues)    \
  ((This)->lpVtbl->get_tagRanges(This, count, pcRangeValues, rangeValues))

#endif /* COBJMACROS */

#endif /* C style interface */

  HRESULT STDMETHODCALLTYPE IDiaSymbol11_get_discriminatedUnionTag_Proxy(
      IDiaSymbol11 *This,
      /* [out] */ IDiaSymbol **ppTagType,
      /* [out] */ DWORD *pTagOffset,
      /* [out] */ struct DiaTagValue *pTagMask);

  void __RPC_STUB IDiaSymbol11_get_discriminatedUnionTag_Stub(
        IRpcStubBuffer *This,
        IRpcChannelBuffer *_pRpcChannelBuffer,
        PRPC_MESSAGE _pRpcMessage,
        DWORD *_pdwStubPhase);

  HRESULT STDMETHODCALLTYPE IDiaSymbol11_get_tagRanges_Proxy(
      IDiaSymbol11 *This,
      /* [in] */ DWORD count,
      /* [out] */ DWORD *pcRangeValues,
      /* [size_is][out] */ struct DiaTagValue *rangeValues);

  void __RPC_STUB
  IDiaSymbol11_get_tagRanges_Stub(IRpcStubBuffer *This,
                                  IRpcChannelBuffer *_pRpcChannelBuffer,
                                  PRPC_MESSAGE _pRpcMessage,
                                  DWORD *_pdwStubPhase);

#endif /* __IDiaSymbol11_INTERFACE_DEFINED__ */

#ifndef __IDiaSourceFile_INTERFACE_DEFINED__
#define __IDiaSourceFile_INTERFACE_DEFINED__

  /* interface IDiaSourceFile */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSourceFile;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("A2EF5353-F5A8-4eb3-90D2-CB526ACB3CDD")
  IDiaSourceFile : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_uniqueId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_fileName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_checksumType(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compilands(
            /* [retval][out] */ IDiaEnumSymbols * *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_checksum(
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSourceFileVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSourceFile *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSourceFile *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSourceFile *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uniqueId)(
        IDiaSourceFile *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_fileName)(
        IDiaSourceFile *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_checksumType)(
        IDiaSourceFile *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_compilands)(
        IDiaSourceFile *This,
        /* [retval][out] */ IDiaEnumSymbols **pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_checksum)(IDiaSourceFile *This,
                                             /* [in] */ DWORD cbData,
                                             /* [out] */ DWORD *pcbData,
                                             /* [size_is][out] */ BYTE *pbData);

    END_INTERFACE
  } IDiaSourceFileVtbl;

  interface IDiaSourceFile { CONST_VTBL struct IDiaSourceFileVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSourceFile_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSourceFile_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSourceFile_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSourceFile_get_uniqueId(This, pRetVal)                             \
  ((This)->lpVtbl->get_uniqueId(This, pRetVal))

#define IDiaSourceFile_get_fileName(This, pRetVal)                             \
  ((This)->lpVtbl->get_fileName(This, pRetVal))

#define IDiaSourceFile_get_checksumType(This, pRetVal)                         \
  ((This)->lpVtbl->get_checksumType(This, pRetVal))

#define IDiaSourceFile_get_compilands(This, pRetVal)                           \
  ((This)->lpVtbl->get_compilands(This, pRetVal))

#define IDiaSourceFile_get_checksum(This, cbData, pcbData, pbData)             \
  ((This)->lpVtbl->get_checksum(This, cbData, pcbData, pbData))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaSourceFile_INTERFACE_DEFINED__ */

#ifndef __IDiaInputAssemblyFile_INTERFACE_DEFINED__
#define __IDiaInputAssemblyFile_INTERFACE_DEFINED__

  /* interface IDiaInputAssemblyFile */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaInputAssemblyFile;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("3BFE56B0-390C-4863-9430-1F3D083B7684")
  IDiaInputAssemblyFile : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_uniqueId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_index(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_timestamp(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_pdbAvailableAtILMerge(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_fileName(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_version(
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;
  };

#else /* C style interface */

  typedef struct IDiaInputAssemblyFileVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaInputAssemblyFile *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaInputAssemblyFile *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaInputAssemblyFile *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_uniqueId)(
        IDiaInputAssemblyFile *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_index)(
        IDiaInputAssemblyFile *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_timestamp)(
        IDiaInputAssemblyFile *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_pdbAvailableAtILMerge)(
        IDiaInputAssemblyFile *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_fileName)(
        IDiaInputAssemblyFile *This,
        /* [retval][out] */ BSTR *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_version)(IDiaInputAssemblyFile *This,
                                            /* [in] */ DWORD cbData,
                                            /* [out] */ DWORD *pcbData,
                                            /* [size_is][out] */ BYTE *pbData);

    END_INTERFACE
  } IDiaInputAssemblyFileVtbl;

  interface IDiaInputAssemblyFile
  {
    CONST_VTBL struct IDiaInputAssemblyFileVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaInputAssemblyFile_QueryInterface(This, riid, ppvObject)            \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaInputAssemblyFile_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaInputAssemblyFile_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaInputAssemblyFile_get_uniqueId(This, pRetVal)                      \
  ((This)->lpVtbl->get_uniqueId(This, pRetVal))

#define IDiaInputAssemblyFile_get_index(This, pRetVal)                         \
  ((This)->lpVtbl->get_index(This, pRetVal))

#define IDiaInputAssemblyFile_get_timestamp(This, pRetVal)                     \
  ((This)->lpVtbl->get_timestamp(This, pRetVal))

#define IDiaInputAssemblyFile_get_pdbAvailableAtILMerge(This, pRetVal)         \
  ((This)->lpVtbl->get_pdbAvailableAtILMerge(This, pRetVal))

#define IDiaInputAssemblyFile_get_fileName(This, pRetVal)                      \
  ((This)->lpVtbl->get_fileName(This, pRetVal))

#define IDiaInputAssemblyFile_get_version(This, cbData, pcbData, pbData)       \
  ((This)->lpVtbl->get_version(This, cbData, pcbData, pbData))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaInputAssemblyFile_INTERFACE_DEFINED__ */

#ifndef __IDiaLineNumber_INTERFACE_DEFINED__
#define __IDiaLineNumber_INTERFACE_DEFINED__

  /* interface IDiaLineNumber */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaLineNumber;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("B388EB14-BE4D-421d-A8A1-6CF7AB057086")
  IDiaLineNumber : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compiland(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sourceFile(
            /* [retval][out] */ IDiaSourceFile * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lineNumber(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lineNumberEnd(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_columnNumber(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_columnNumberEnd(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_length(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sourceFileId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_statement(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compilandId(
            /* [retval][out] */ DWORD * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaLineNumberVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaLineNumber *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaLineNumber *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaLineNumber *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_compiland)(
        IDiaLineNumber *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_sourceFile)(
        IDiaLineNumber *This,
        /* [retval][out] */ IDiaSourceFile **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lineNumber)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lineNumberEnd)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_columnNumber)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_columnNumberEnd)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaLineNumber *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceFileId)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_statement)(
        IDiaLineNumber *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_compilandId)(
        IDiaLineNumber *This,
        /* [retval][out] */ DWORD *pRetVal);

    END_INTERFACE
  } IDiaLineNumberVtbl;

  interface IDiaLineNumber { CONST_VTBL struct IDiaLineNumberVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaLineNumber_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaLineNumber_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaLineNumber_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaLineNumber_get_compiland(This, pRetVal)                            \
  ((This)->lpVtbl->get_compiland(This, pRetVal))

#define IDiaLineNumber_get_sourceFile(This, pRetVal)                           \
  ((This)->lpVtbl->get_sourceFile(This, pRetVal))

#define IDiaLineNumber_get_lineNumber(This, pRetVal)                           \
  ((This)->lpVtbl->get_lineNumber(This, pRetVal))

#define IDiaLineNumber_get_lineNumberEnd(This, pRetVal)                        \
  ((This)->lpVtbl->get_lineNumberEnd(This, pRetVal))

#define IDiaLineNumber_get_columnNumber(This, pRetVal)                         \
  ((This)->lpVtbl->get_columnNumber(This, pRetVal))

#define IDiaLineNumber_get_columnNumberEnd(This, pRetVal)                      \
  ((This)->lpVtbl->get_columnNumberEnd(This, pRetVal))

#define IDiaLineNumber_get_addressSection(This, pRetVal)                       \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaLineNumber_get_addressOffset(This, pRetVal)                        \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaLineNumber_get_relativeVirtualAddress(This, pRetVal)               \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaLineNumber_get_virtualAddress(This, pRetVal)                       \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaLineNumber_get_length(This, pRetVal)                               \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaLineNumber_get_sourceFileId(This, pRetVal)                         \
  ((This)->lpVtbl->get_sourceFileId(This, pRetVal))

#define IDiaLineNumber_get_statement(This, pRetVal)                            \
  ((This)->lpVtbl->get_statement(This, pRetVal))

#define IDiaLineNumber_get_compilandId(This, pRetVal)                          \
  ((This)->lpVtbl->get_compilandId(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaLineNumber_INTERFACE_DEFINED__ */

#ifndef __IDiaSectionContrib_INTERFACE_DEFINED__
#define __IDiaSectionContrib_INTERFACE_DEFINED__

  /* interface IDiaSectionContrib */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSectionContrib;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("0CF4B60E-35B1-4c6c-BDD8-854B9C8E3857")
  IDiaSectionContrib : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compiland(
            /* [retval][out] */ IDiaSymbol * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_length(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_notPaged(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_code(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_initializedData(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_uninitializedData(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_remove(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_comdat(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_discardable(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_notCached(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_share(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_execute(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_read(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_write(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_dataCrc(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relocationsCrc(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_compilandId(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_code16bit(
            /* [retval][out] */ BOOL * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSectionContribVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSectionContrib *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSectionContrib *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSectionContrib *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_compiland)(
        IDiaSectionContrib *This,
        /* [retval][out] */ IDiaSymbol **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSectionContrib *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notPaged)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_initializedData)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_uninitializedData)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_remove)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_comdat)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_discardable)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_notCached)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_share)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_execute)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_read)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_write)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_dataCrc)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relocationsCrc)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_compilandId)(
        IDiaSectionContrib *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_code16bit)(
        IDiaSectionContrib *This,
        /* [retval][out] */ BOOL *pRetVal);

    END_INTERFACE
  } IDiaSectionContribVtbl;

  interface IDiaSectionContrib
  {
    CONST_VTBL struct IDiaSectionContribVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaSectionContrib_QueryInterface(This, riid, ppvObject)               \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSectionContrib_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSectionContrib_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSectionContrib_get_compiland(This, pRetVal)                        \
  ((This)->lpVtbl->get_compiland(This, pRetVal))

#define IDiaSectionContrib_get_addressSection(This, pRetVal)                   \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSectionContrib_get_addressOffset(This, pRetVal)                    \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaSectionContrib_get_relativeVirtualAddress(This, pRetVal)           \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSectionContrib_get_virtualAddress(This, pRetVal)                   \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaSectionContrib_get_length(This, pRetVal)                           \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSectionContrib_get_notPaged(This, pRetVal)                         \
  ((This)->lpVtbl->get_notPaged(This, pRetVal))

#define IDiaSectionContrib_get_code(This, pRetVal)                             \
  ((This)->lpVtbl->get_code(This, pRetVal))

#define IDiaSectionContrib_get_initializedData(This, pRetVal)                  \
  ((This)->lpVtbl->get_initializedData(This, pRetVal))

#define IDiaSectionContrib_get_uninitializedData(This, pRetVal)                \
  ((This)->lpVtbl->get_uninitializedData(This, pRetVal))

#define IDiaSectionContrib_get_remove(This, pRetVal)                           \
  ((This)->lpVtbl->get_remove(This, pRetVal))

#define IDiaSectionContrib_get_comdat(This, pRetVal)                           \
  ((This)->lpVtbl->get_comdat(This, pRetVal))

#define IDiaSectionContrib_get_discardable(This, pRetVal)                      \
  ((This)->lpVtbl->get_discardable(This, pRetVal))

#define IDiaSectionContrib_get_notCached(This, pRetVal)                        \
  ((This)->lpVtbl->get_notCached(This, pRetVal))

#define IDiaSectionContrib_get_share(This, pRetVal)                            \
  ((This)->lpVtbl->get_share(This, pRetVal))

#define IDiaSectionContrib_get_execute(This, pRetVal)                          \
  ((This)->lpVtbl->get_execute(This, pRetVal))

#define IDiaSectionContrib_get_read(This, pRetVal)                             \
  ((This)->lpVtbl->get_read(This, pRetVal))

#define IDiaSectionContrib_get_write(This, pRetVal)                            \
  ((This)->lpVtbl->get_write(This, pRetVal))

#define IDiaSectionContrib_get_dataCrc(This, pRetVal)                          \
  ((This)->lpVtbl->get_dataCrc(This, pRetVal))

#define IDiaSectionContrib_get_relocationsCrc(This, pRetVal)                   \
  ((This)->lpVtbl->get_relocationsCrc(This, pRetVal))

#define IDiaSectionContrib_get_compilandId(This, pRetVal)                      \
  ((This)->lpVtbl->get_compilandId(This, pRetVal))

#define IDiaSectionContrib_get_code16bit(This, pRetVal)                        \
  ((This)->lpVtbl->get_code16bit(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaSectionContrib_INTERFACE_DEFINED__ */

#ifndef __IDiaSegment_INTERFACE_DEFINED__
#define __IDiaSegment_INTERFACE_DEFINED__

  /* interface IDiaSegment */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaSegment;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("0775B784-C75B-4449-848B-B7BD3159545B")
  IDiaSegment : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frame(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_offset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_length(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_read(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_write(
        /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_execute(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaSegmentVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaSegment *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaSegment *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaSegment *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_frame)(
        IDiaSegment *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_offset)(
        IDiaSegment *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaSegment *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_read)(
        IDiaSegment *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_write)(
        IDiaSegment *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_execute)(
        IDiaSegment *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaSegment *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaSegment *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaSegment *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    END_INTERFACE
  } IDiaSegmentVtbl;

  interface IDiaSegment { CONST_VTBL struct IDiaSegmentVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaSegment_QueryInterface(This, riid, ppvObject)                      \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaSegment_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaSegment_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaSegment_get_frame(This, pRetVal)                                   \
  ((This)->lpVtbl->get_frame(This, pRetVal))

#define IDiaSegment_get_offset(This, pRetVal)                                  \
  ((This)->lpVtbl->get_offset(This, pRetVal))

#define IDiaSegment_get_length(This, pRetVal)                                  \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaSegment_get_read(This, pRetVal)                                    \
  ((This)->lpVtbl->get_read(This, pRetVal))

#define IDiaSegment_get_write(This, pRetVal)                                   \
  ((This)->lpVtbl->get_write(This, pRetVal))

#define IDiaSegment_get_execute(This, pRetVal)                                 \
  ((This)->lpVtbl->get_execute(This, pRetVal))

#define IDiaSegment_get_addressSection(This, pRetVal)                          \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaSegment_get_relativeVirtualAddress(This, pRetVal)                  \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaSegment_get_virtualAddress(This, pRetVal)                          \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaSegment_INTERFACE_DEFINED__ */

#ifndef __IDiaInjectedSource_INTERFACE_DEFINED__
#define __IDiaInjectedSource_INTERFACE_DEFINED__

  /* interface IDiaInjectedSource */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaInjectedSource;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("AE605CDC-8105-4a23-B710-3259F1E26112")
  IDiaInjectedSource : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_crc(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_length(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_filename(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_objectFilename(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualFilename(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_sourceCompression(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_source(
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;
  };

#else /* C style interface */

  typedef struct IDiaInjectedSourceVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaInjectedSource *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaInjectedSource *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaInjectedSource *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_crc)(
        IDiaInjectedSource *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_length)(
        IDiaInjectedSource *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_filename)(
        IDiaInjectedSource *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_objectFilename)(
        IDiaInjectedSource *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualFilename)(
        IDiaInjectedSource *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_sourceCompression)(
        IDiaInjectedSource *This,
        /* [retval][out] */ DWORD *pRetVal);

    HRESULT(STDMETHODCALLTYPE *get_source)(IDiaInjectedSource *This,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    END_INTERFACE
  } IDiaInjectedSourceVtbl;

  interface IDiaInjectedSource
  {
    CONST_VTBL struct IDiaInjectedSourceVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaInjectedSource_QueryInterface(This, riid, ppvObject)               \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaInjectedSource_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaInjectedSource_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaInjectedSource_get_crc(This, pRetVal)                              \
  ((This)->lpVtbl->get_crc(This, pRetVal))

#define IDiaInjectedSource_get_length(This, pRetVal)                           \
  ((This)->lpVtbl->get_length(This, pRetVal))

#define IDiaInjectedSource_get_filename(This, pRetVal)                         \
  ((This)->lpVtbl->get_filename(This, pRetVal))

#define IDiaInjectedSource_get_objectFilename(This, pRetVal)                   \
  ((This)->lpVtbl->get_objectFilename(This, pRetVal))

#define IDiaInjectedSource_get_virtualFilename(This, pRetVal)                  \
  ((This)->lpVtbl->get_virtualFilename(This, pRetVal))

#define IDiaInjectedSource_get_sourceCompression(This, pRetVal)                \
  ((This)->lpVtbl->get_sourceCompression(This, pRetVal))

#define IDiaInjectedSource_get_source(This, cbData, pcbData, pbData)           \
  ((This)->lpVtbl->get_source(This, cbData, pcbData, pbData))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaInjectedSource_INTERFACE_DEFINED__ */

#ifndef __IDiaStackWalkFrame_INTERFACE_DEFINED__
#define __IDiaStackWalkFrame_INTERFACE_DEFINED__

  /* interface IDiaStackWalkFrame */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackWalkFrame;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("07C590C1-438D-4F47-BDCD-4397BC81AD75")
  IDiaStackWalkFrame : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
    get_registerValue(
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_registerValue(
        /* [in] */ DWORD index,
        /* [in] */ ULONGLONG NewVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE readMemory(
        /* [in] */ enum MemoryTypeEnum type,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE searchForReturnAddress(
        /* [in] */ IDiaFrameData * frame,
        /* [out] */ ULONGLONG * returnAddress) = 0;

    virtual HRESULT STDMETHODCALLTYPE searchForReturnAddressStart(
        /* [in] */ IDiaFrameData * frame,
        /* [in] */ ULONGLONG startAddress,
        /* [out] */ ULONGLONG * returnAddress) = 0;
  };

#else /* C style interface */

  typedef struct IDiaStackWalkFrameVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackWalkFrame *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackWalkFrame *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackWalkFrame *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerValue)(
        IDiaStackWalkFrame *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(
        STDMETHODCALLTYPE *put_registerValue)(IDiaStackWalkFrame *This,
                                              /* [in] */ DWORD index,
                                              /* [in] */ ULONGLONG NewVal);

    HRESULT(STDMETHODCALLTYPE *readMemory)(IDiaStackWalkFrame *This,
                                           /* [in] */ enum MemoryTypeEnum type,
                                           /* [in] */ ULONGLONG va,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddress)(
        IDiaStackWalkFrame *This,
        /* [in] */ IDiaFrameData *frame,
        /* [out] */ ULONGLONG *returnAddress);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddressStart)(
        IDiaStackWalkFrame *This,
        /* [in] */ IDiaFrameData *frame,
        /* [in] */ ULONGLONG startAddress,
        /* [out] */ ULONGLONG *returnAddress);

    END_INTERFACE
  } IDiaStackWalkFrameVtbl;

  interface IDiaStackWalkFrame
  {
    CONST_VTBL struct IDiaStackWalkFrameVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaStackWalkFrame_QueryInterface(This, riid, ppvObject)               \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackWalkFrame_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackWalkFrame_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackWalkFrame_get_registerValue(This, index, pRetVal)             \
  ((This)->lpVtbl->get_registerValue(This, index, pRetVal))

#define IDiaStackWalkFrame_put_registerValue(This, index, NewVal)              \
  ((This)->lpVtbl->put_registerValue(This, index, NewVal))

#define IDiaStackWalkFrame_readMemory(This, type, va, cbData, pcbData, pbData) \
  ((This)->lpVtbl->readMemory(This, type, va, cbData, pcbData, pbData))

#define IDiaStackWalkFrame_searchForReturnAddress(This, frame, returnAddress)  \
  ((This)->lpVtbl->searchForReturnAddress(This, frame, returnAddress))

#define IDiaStackWalkFrame_searchForReturnAddressStart(                        \
    This, frame, startAddress, returnAddress)                                  \
  ((This)->lpVtbl->searchForReturnAddressStart(This, frame, startAddress,      \
                                               returnAddress))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackWalkFrame_INTERFACE_DEFINED__ */

#ifndef __IDiaFrameData_INTERFACE_DEFINED__
#define __IDiaFrameData_INTERFACE_DEFINED__

  /* interface IDiaFrameData */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaFrameData;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("A39184B7-6A36-42de-8EEC-7DF9F3F59F33")
  IDiaFrameData : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressSection(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_addressOffset(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthBlock(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthLocals(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthParams(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_maxStack(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthProlog(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthSavedRegisters(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_program(
            /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_systemExceptionHandling(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_cplusplusExceptionHandling(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_functionStart(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_allocatesBasePointer(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_functionParent(
            /* [retval][out] */ IDiaFrameData * *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE execute(IDiaStackWalkFrame * frame) = 0;
  };

#else /* C style interface */

  typedef struct IDiaFrameDataVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaFrameData *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaFrameData *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaFrameData *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressSection)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_addressOffset)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaFrameData *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_lengthBlock)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthLocals)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthParams)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_maxStack)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthProlog)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthSavedRegisters)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_program)(
        IDiaFrameData *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_systemExceptionHandling)(
        IDiaFrameData *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_cplusplusExceptionHandling)(
        IDiaFrameData *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_functionStart)(
        IDiaFrameData *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_allocatesBasePointer)(
        IDiaFrameData *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaFrameData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_functionParent)(
        IDiaFrameData *This,
        /* [retval][out] */ IDiaFrameData **pRetVal);

    HRESULT(STDMETHODCALLTYPE *execute)(IDiaFrameData *This,
                                        IDiaStackWalkFrame *frame);

    END_INTERFACE
  } IDiaFrameDataVtbl;

  interface IDiaFrameData { CONST_VTBL struct IDiaFrameDataVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaFrameData_QueryInterface(This, riid, ppvObject)                    \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaFrameData_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaFrameData_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaFrameData_get_addressSection(This, pRetVal)                        \
  ((This)->lpVtbl->get_addressSection(This, pRetVal))

#define IDiaFrameData_get_addressOffset(This, pRetVal)                         \
  ((This)->lpVtbl->get_addressOffset(This, pRetVal))

#define IDiaFrameData_get_relativeVirtualAddress(This, pRetVal)                \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaFrameData_get_virtualAddress(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaFrameData_get_lengthBlock(This, pRetVal)                           \
  ((This)->lpVtbl->get_lengthBlock(This, pRetVal))

#define IDiaFrameData_get_lengthLocals(This, pRetVal)                          \
  ((This)->lpVtbl->get_lengthLocals(This, pRetVal))

#define IDiaFrameData_get_lengthParams(This, pRetVal)                          \
  ((This)->lpVtbl->get_lengthParams(This, pRetVal))

#define IDiaFrameData_get_maxStack(This, pRetVal)                              \
  ((This)->lpVtbl->get_maxStack(This, pRetVal))

#define IDiaFrameData_get_lengthProlog(This, pRetVal)                          \
  ((This)->lpVtbl->get_lengthProlog(This, pRetVal))

#define IDiaFrameData_get_lengthSavedRegisters(This, pRetVal)                  \
  ((This)->lpVtbl->get_lengthSavedRegisters(This, pRetVal))

#define IDiaFrameData_get_program(This, pRetVal)                               \
  ((This)->lpVtbl->get_program(This, pRetVal))

#define IDiaFrameData_get_systemExceptionHandling(This, pRetVal)               \
  ((This)->lpVtbl->get_systemExceptionHandling(This, pRetVal))

#define IDiaFrameData_get_cplusplusExceptionHandling(This, pRetVal)            \
  ((This)->lpVtbl->get_cplusplusExceptionHandling(This, pRetVal))

#define IDiaFrameData_get_functionStart(This, pRetVal)                         \
  ((This)->lpVtbl->get_functionStart(This, pRetVal))

#define IDiaFrameData_get_allocatesBasePointer(This, pRetVal)                  \
  ((This)->lpVtbl->get_allocatesBasePointer(This, pRetVal))

#define IDiaFrameData_get_type(This, pRetVal)                                  \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaFrameData_get_functionParent(This, pRetVal)                        \
  ((This)->lpVtbl->get_functionParent(This, pRetVal))

#define IDiaFrameData_execute(This, frame)                                     \
  ((This)->lpVtbl->execute(This, frame))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaFrameData_INTERFACE_DEFINED__ */

#ifndef __IDiaImageData_INTERFACE_DEFINED__
#define __IDiaImageData_INTERFACE_DEFINED__

  /* interface IDiaImageData */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaImageData;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("C8E40ED2-A1D9-4221-8692-3CE661184B44")
  IDiaImageData : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_relativeVirtualAddress(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_virtualAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_imageBase(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaImageDataVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaImageData *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaImageData *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaImageData *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_relativeVirtualAddress)(
        IDiaImageData *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_virtualAddress)(
        IDiaImageData *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_imageBase)(
        IDiaImageData *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    END_INTERFACE
  } IDiaImageDataVtbl;

  interface IDiaImageData { CONST_VTBL struct IDiaImageDataVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaImageData_QueryInterface(This, riid, ppvObject)                    \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaImageData_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaImageData_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaImageData_get_relativeVirtualAddress(This, pRetVal)                \
  ((This)->lpVtbl->get_relativeVirtualAddress(This, pRetVal))

#define IDiaImageData_get_virtualAddress(This, pRetVal)                        \
  ((This)->lpVtbl->get_virtualAddress(This, pRetVal))

#define IDiaImageData_get_imageBase(This, pRetVal)                             \
  ((This)->lpVtbl->get_imageBase(This, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaImageData_INTERFACE_DEFINED__ */

#ifndef __IDiaTable_INTERFACE_DEFINED__
#define __IDiaTable_INTERFACE_DEFINED__

  /* interface IDiaTable */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaTable;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("4A59FB77-ABAC-469b-A30B-9ECC85BFEF14")
  IDiaTable : public IEnumUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name(
        /* [retval][out] */ BSTR * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ DWORD index,
        /* [retval][out] */ IUnknown * *element) = 0;
  };

#else /* C style interface */

  typedef struct IDiaTableVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaTable *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaTable *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaTable *This);

    /* [local] */ HRESULT(STDMETHODCALLTYPE *Next)(
        IDiaTable *This,
        /* [annotation][in] */
        _In_ ULONG celt,
        /* [annotation][out] */
        _Out_writes_to_(celt, *pceltFetched) IUnknown **rgelt,
        /* [annotation][out] */
        _Out_opt_ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaTable *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaTable *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaTable *This,
                                      /* [out] */ IEnumUnknown **ppenum);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaTable *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_name)(
        IDiaTable *This,
        /* [retval][out] */ BSTR *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaTable *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaTable *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ IUnknown **element);

    END_INTERFACE
  } IDiaTableVtbl;

  interface IDiaTable { CONST_VTBL struct IDiaTableVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaTable_QueryInterface(This, riid, ppvObject)                        \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaTable_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaTable_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaTable_Next(This, celt, rgelt, pceltFetched)                        \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaTable_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaTable_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaTable_Clone(This, ppenum) ((This)->lpVtbl->Clone(This, ppenum))

#define IDiaTable_get__NewEnum(This, pRetVal)                                  \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaTable_get_name(This, pRetVal)                                      \
  ((This)->lpVtbl->get_name(This, pRetVal))

#define IDiaTable_get_Count(This, pRetVal)                                     \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaTable_Item(This, index, element)                                   \
  ((This)->lpVtbl->Item(This, index, element))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaTable_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumTables_INTERFACE_DEFINED__
#define __IDiaEnumTables_INTERFACE_DEFINED__

  /* interface IDiaEnumTables */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumTables;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("C65C2B0A-1150-4d7a-AFCC-E05BF3DEE81E")
  IDiaEnumTables : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
        /* [in] */ VARIANT index,
        /* [retval][out] */ IDiaTable * *table) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        IDiaTable * *rgelt,
        ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumTables * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumTablesVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumTables *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumTables *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumTables *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumTables *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumTables *This,
        /* [retval][out] */ LONG *pRetVal);

    /* [helpstring][id] */ HRESULT(STDMETHODCALLTYPE *Item)(
        IDiaEnumTables *This,
        /* [in] */ VARIANT index,
        /* [retval][out] */ IDiaTable **table);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumTables *This,
                                     ULONG celt,
                                     IDiaTable **rgelt,
                                     ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumTables *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumTables *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumTables *This,
                                      /* [out] */ IDiaEnumTables **ppenum);

    END_INTERFACE
  } IDiaEnumTablesVtbl;

  interface IDiaEnumTables { CONST_VTBL struct IDiaEnumTablesVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaEnumTables_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumTables_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumTables_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumTables_get__NewEnum(This, pRetVal)                             \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumTables_get_Count(This, pRetVal)                                \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumTables_Item(This, index, table)                                \
  ((This)->lpVtbl->Item(This, index, table))

#define IDiaEnumTables_Next(This, celt, rgelt, pceltFetched)                   \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumTables_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumTables_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumTables_Clone(This, ppenum) ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumTables_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSourceLink_INTERFACE_DEFINED__
#define __IDiaEnumSourceLink_INTERFACE_DEFINED__

  /* interface IDiaEnumSourceLink */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSourceLink;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("45cd1eb3-5c6c-43e3-b20a-a4d8035de4e2")
  IDiaEnumSourceLink : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE Count(
        /* [out] */ DWORD * pCnt) = 0;

    virtual HRESULT STDMETHODCALLTYPE SizeOfNext(
        /* [out] */ DWORD * pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ DWORD cb,
        /* [out] */ DWORD * pcb,
        /* [size_is][out] */ BYTE * pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ DWORD cnt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumSourceLink * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSourceLinkVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSourceLink *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSourceLink *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSourceLink *This);

    HRESULT(STDMETHODCALLTYPE *Count)(IDiaEnumSourceLink *This,
                                      /* [out] */ DWORD *pCnt);

    HRESULT(STDMETHODCALLTYPE *SizeOfNext)(IDiaEnumSourceLink *This,
                                           /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSourceLink *This,
                                     /* [in] */ DWORD cb,
                                     /* [out] */ DWORD *pcb,
                                     /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSourceLink *This,
                                     /* [in] */ DWORD cnt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSourceLink *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumSourceLink *This,
                                      /* [out] */ IDiaEnumSourceLink **ppenum);

    END_INTERFACE
  } IDiaEnumSourceLinkVtbl;

  interface IDiaEnumSourceLink
  {
    CONST_VTBL struct IDiaEnumSourceLinkVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSourceLink_QueryInterface(This, riid, ppvObject)               \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSourceLink_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSourceLink_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSourceLink_Count(This, pCnt) ((This)->lpVtbl->Count(This, pCnt))

#define IDiaEnumSourceLink_SizeOfNext(This, pcb)                               \
  ((This)->lpVtbl->SizeOfNext(This, pcb))

#define IDiaEnumSourceLink_Next(This, cb, pcb, pb)                             \
  ((This)->lpVtbl->Next(This, cb, pcb, pb))

#define IDiaEnumSourceLink_Skip(This, cnt) ((This)->lpVtbl->Skip(This, cnt))

#define IDiaEnumSourceLink_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSourceLink_Clone(This, ppenum)                                 \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSourceLink_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumSourceLink2_INTERFACE_DEFINED__
#define __IDiaEnumSourceLink2_INTERFACE_DEFINED__

  /* interface IDiaEnumSourceLink2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumSourceLink2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("136d8151-ade7-4704-af13-324080762e8f")
  IDiaEnumSourceLink2 : public IDiaEnumSourceLink
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE SizeOfNext2(
        /* [out] */ ULONGLONG * pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next2(
        /* [in] */ ULONGLONG cb,
        /* [out] */ ULONGLONG * pcb,
        /* [size_is][out] */ BYTE * pb) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumSourceLink2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumSourceLink2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumSourceLink2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumSourceLink2 *This);

    HRESULT(STDMETHODCALLTYPE *Count)(IDiaEnumSourceLink2 *This,
                                      /* [out] */ DWORD *pCnt);

    HRESULT(STDMETHODCALLTYPE *SizeOfNext)(IDiaEnumSourceLink2 *This,
                                           /* [out] */ DWORD *pcb);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumSourceLink2 *This,
                                     /* [in] */ DWORD cb,
                                     /* [out] */ DWORD *pcb,
                                     /* [size_is][out] */ BYTE *pb);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumSourceLink2 *This,
                                     /* [in] */ DWORD cnt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumSourceLink2 *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(IDiaEnumSourceLink2 *This,
                                      /* [out] */ IDiaEnumSourceLink **ppenum);

    HRESULT(STDMETHODCALLTYPE *SizeOfNext2)(IDiaEnumSourceLink2 *This,
                                            /* [out] */ ULONGLONG *pcb);

    HRESULT(STDMETHODCALLTYPE *Next2)(IDiaEnumSourceLink2 *This,
                                      /* [in] */ ULONGLONG cb,
                                      /* [out] */ ULONGLONG *pcb,
                                      /* [size_is][out] */ BYTE *pb);

    END_INTERFACE
  } IDiaEnumSourceLink2Vtbl;

  interface IDiaEnumSourceLink2
  {
    CONST_VTBL struct IDiaEnumSourceLink2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumSourceLink2_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumSourceLink2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumSourceLink2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumSourceLink2_Count(This, pCnt)                                  \
  ((This)->lpVtbl->Count(This, pCnt))

#define IDiaEnumSourceLink2_SizeOfNext(This, pcb)                              \
  ((This)->lpVtbl->SizeOfNext(This, pcb))

#define IDiaEnumSourceLink2_Next(This, cb, pcb, pb)                            \
  ((This)->lpVtbl->Next(This, cb, pcb, pb))

#define IDiaEnumSourceLink2_Skip(This, cnt) ((This)->lpVtbl->Skip(This, cnt))

#define IDiaEnumSourceLink2_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumSourceLink2_Clone(This, ppenum)                                \
  ((This)->lpVtbl->Clone(This, ppenum))

#define IDiaEnumSourceLink2_SizeOfNext2(This, pcb)                             \
  ((This)->lpVtbl->SizeOfNext2(This, pcb))

#define IDiaEnumSourceLink2_Next2(This, cb, pcb, pb)                           \
  ((This)->lpVtbl->Next2(This, cb, pcb, pb))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumSourceLink2_INTERFACE_DEFINED__ */

#ifndef __Dia2Lib_LIBRARY_DEFINED__
#define __Dia2Lib_LIBRARY_DEFINED__

  /* library Dia2Lib */
  /* [helpstring][version][uuid] */

  EXTERN_C const IID LIBID_Dia2Lib;

  EXTERN_C const CLSID CLSID_DiaSource;

#ifdef __cplusplus

  class DECLSPEC_UUID("e6756135-1e65-4d17-8576-610761398c3c") DiaSource;
#endif

  EXTERN_C const CLSID CLSID_DiaSourceAlt;

#ifdef __cplusplus

  class DECLSPEC_UUID("91904831-49ca-4766-b95c-25397e2dd6dc") DiaSourceAlt;
#endif

  EXTERN_C const CLSID CLSID_DiaStackWalker;

#ifdef __cplusplus

  class DECLSPEC_UUID("ce4a85db-5768-475b-a4e1-c0bca2112a6b") DiaStackWalker;
#endif
#endif /* __Dia2Lib_LIBRARY_DEFINED__ */

  /* interface __MIDL_itf_dia2_0000_0047 */
  /* [local] */

#define DiaTable_Symbols (L"Symbols")

#define DiaTable_Sections (L"Sections")

#define DiaTable_SrcFiles (L"SourceFiles")

#define DiaTable_LineNums (L"LineNumbers")

#define DiaTable_SegMap (L"SegmentMap")

#define DiaTable_Dbg (L"Dbg")

#define DiaTable_InjSrc (L"InjectedSource")

#define DiaTable_FrameData (L"FrameData")

#define DiaTable_InputAssemblyFiles (L"InputAssemblyFiles")

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0047_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0047_v0_0_s_ifspec;

#ifndef __IDiaPropertyStorage_INTERFACE_DEFINED__
#define __IDiaPropertyStorage_INTERFACE_DEFINED__

  /* interface IDiaPropertyStorage */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaPropertyStorage;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("9d416f9c-e184-45b2-a4f0-ce517f719e9b")
  IDiaPropertyStorage : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE ReadMultiple(
        /* [in] */ ULONG cpspec,
        /* [size_is][in] */ const PROPSPEC *rgpspec,
        /* [size_is][out] */ PROPVARIANT *rgvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames(
        /* [in] */ ULONG cpropid,
        /* [size_is][in] */ const PROPID *rgpropid,
        /* [size_is][out][in] */ BSTR *rglpwstrName) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enum(
        /* [out] */ IEnumSTATPROPSTG * *ppenum) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadDWORD(
        /* [in] */ PROPID id,
        /* [out] */ DWORD * pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadLONG(
        /* [in] */ PROPID id,
        /* [out] */ LONG * pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadBOOL(
        /* [in] */ PROPID id,
        /* [out] */ BOOL * pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadULONGLONG(
        /* [in] */ PROPID id,
        /* [out] */ ULONGLONG * pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadBSTR(
        /* [in] */ PROPID id,
        /* [out] */ BSTR * pValue) = 0;
  };

#else /* C style interface */

  typedef struct IDiaPropertyStorageVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaPropertyStorage *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaPropertyStorage *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaPropertyStorage *This);

    HRESULT(STDMETHODCALLTYPE *ReadMultiple)(
        IDiaPropertyStorage *This,
        /* [in] */ ULONG cpspec,
        /* [size_is][in] */ const PROPSPEC *rgpspec,
        /* [size_is][out] */ PROPVARIANT *rgvar);

    HRESULT(STDMETHODCALLTYPE *ReadPropertyNames)(
        IDiaPropertyStorage *This,
        /* [in] */ ULONG cpropid,
        /* [size_is][in] */ const PROPID *rgpropid,
        /* [size_is][out][in] */ BSTR *rglpwstrName);

    HRESULT(STDMETHODCALLTYPE *Enum)(IDiaPropertyStorage *This,
                                     /* [out] */ IEnumSTATPROPSTG **ppenum);

    HRESULT(STDMETHODCALLTYPE *ReadDWORD)(IDiaPropertyStorage *This,
                                          /* [in] */ PROPID id,
                                          /* [out] */ DWORD *pValue);

    HRESULT(STDMETHODCALLTYPE *ReadLONG)(IDiaPropertyStorage *This,
                                         /* [in] */ PROPID id,
                                         /* [out] */ LONG *pValue);

    HRESULT(STDMETHODCALLTYPE *ReadBOOL)(IDiaPropertyStorage *This,
                                         /* [in] */ PROPID id,
                                         /* [out] */ BOOL *pValue);

    HRESULT(STDMETHODCALLTYPE *ReadULONGLONG)(IDiaPropertyStorage *This,
                                              /* [in] */ PROPID id,
                                              /* [out] */ ULONGLONG *pValue);

    HRESULT(STDMETHODCALLTYPE *ReadBSTR)(IDiaPropertyStorage *This,
                                         /* [in] */ PROPID id,
                                         /* [out] */ BSTR *pValue);

    END_INTERFACE
  } IDiaPropertyStorageVtbl;

  interface IDiaPropertyStorage
  {
    CONST_VTBL struct IDiaPropertyStorageVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaPropertyStorage_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaPropertyStorage_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaPropertyStorage_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaPropertyStorage_ReadMultiple(This, cpspec, rgpspec, rgvar)         \
  ((This)->lpVtbl->ReadMultiple(This, cpspec, rgpspec, rgvar))

#define IDiaPropertyStorage_ReadPropertyNames(This, cpropid, rgpropid,         \
                                              rglpwstrName)                    \
  ((This)->lpVtbl->ReadPropertyNames(This, cpropid, rgpropid, rglpwstrName))

#define IDiaPropertyStorage_Enum(This, ppenum)                                 \
  ((This)->lpVtbl->Enum(This, ppenum))

#define IDiaPropertyStorage_ReadDWORD(This, id, pValue)                        \
  ((This)->lpVtbl->ReadDWORD(This, id, pValue))

#define IDiaPropertyStorage_ReadLONG(This, id, pValue)                         \
  ((This)->lpVtbl->ReadLONG(This, id, pValue))

#define IDiaPropertyStorage_ReadBOOL(This, id, pValue)                         \
  ((This)->lpVtbl->ReadBOOL(This, id, pValue))

#define IDiaPropertyStorage_ReadULONGLONG(This, id, pValue)                    \
  ((This)->lpVtbl->ReadULONGLONG(This, id, pValue))

#define IDiaPropertyStorage_ReadBSTR(This, id, pValue)                         \
  ((This)->lpVtbl->ReadBSTR(This, id, pValue))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaPropertyStorage_INTERFACE_DEFINED__ */

#ifndef __IDiaStackFrame_INTERFACE_DEFINED__
#define __IDiaStackFrame_INTERFACE_DEFINED__

  /* interface IDiaStackFrame */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackFrame;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("5edbc96d-cdd6-4792-afbe-cc89007d9610")
  IDiaStackFrame : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_base(
        /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_size(
        /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_returnAddress(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_localsBase(
            /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthLocals(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthParams(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthProlog(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_lengthSavedRegisters(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_systemExceptionHandling(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_cplusplusExceptionHandling(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_functionStart(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_allocatesBasePointer(
            /* [retval][out] */ BOOL * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get_maxStack(
            /* [retval][out] */ DWORD * pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
    get_registerValue(
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG * pRetVal) = 0;
  };

#else /* C style interface */

  typedef struct IDiaStackFrameVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackFrame *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackFrame *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackFrame *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_type)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_base)(
        IDiaStackFrame *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_size)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_returnAddress)(
        IDiaStackFrame *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_localsBase)(
        IDiaStackFrame *This,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthLocals)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthParams)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthProlog)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_lengthSavedRegisters)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_systemExceptionHandling)(
        IDiaStackFrame *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_cplusplusExceptionHandling)(
        IDiaStackFrame *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_functionStart)(
        IDiaStackFrame *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_allocatesBasePointer)(
        IDiaStackFrame *This,
        /* [retval][out] */ BOOL *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_maxStack)(
        IDiaStackFrame *This,
        /* [retval][out] */ DWORD *pRetVal);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerValue)(
        IDiaStackFrame *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG *pRetVal);

    END_INTERFACE
  } IDiaStackFrameVtbl;

  interface IDiaStackFrame { CONST_VTBL struct IDiaStackFrameVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaStackFrame_QueryInterface(This, riid, ppvObject)                   \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackFrame_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackFrame_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackFrame_get_type(This, pRetVal)                                 \
  ((This)->lpVtbl->get_type(This, pRetVal))

#define IDiaStackFrame_get_base(This, pRetVal)                                 \
  ((This)->lpVtbl->get_base(This, pRetVal))

#define IDiaStackFrame_get_size(This, pRetVal)                                 \
  ((This)->lpVtbl->get_size(This, pRetVal))

#define IDiaStackFrame_get_returnAddress(This, pRetVal)                        \
  ((This)->lpVtbl->get_returnAddress(This, pRetVal))

#define IDiaStackFrame_get_localsBase(This, pRetVal)                           \
  ((This)->lpVtbl->get_localsBase(This, pRetVal))

#define IDiaStackFrame_get_lengthLocals(This, pRetVal)                         \
  ((This)->lpVtbl->get_lengthLocals(This, pRetVal))

#define IDiaStackFrame_get_lengthParams(This, pRetVal)                         \
  ((This)->lpVtbl->get_lengthParams(This, pRetVal))

#define IDiaStackFrame_get_lengthProlog(This, pRetVal)                         \
  ((This)->lpVtbl->get_lengthProlog(This, pRetVal))

#define IDiaStackFrame_get_lengthSavedRegisters(This, pRetVal)                 \
  ((This)->lpVtbl->get_lengthSavedRegisters(This, pRetVal))

#define IDiaStackFrame_get_systemExceptionHandling(This, pRetVal)              \
  ((This)->lpVtbl->get_systemExceptionHandling(This, pRetVal))

#define IDiaStackFrame_get_cplusplusExceptionHandling(This, pRetVal)           \
  ((This)->lpVtbl->get_cplusplusExceptionHandling(This, pRetVal))

#define IDiaStackFrame_get_functionStart(This, pRetVal)                        \
  ((This)->lpVtbl->get_functionStart(This, pRetVal))

#define IDiaStackFrame_get_allocatesBasePointer(This, pRetVal)                 \
  ((This)->lpVtbl->get_allocatesBasePointer(This, pRetVal))

#define IDiaStackFrame_get_maxStack(This, pRetVal)                             \
  ((This)->lpVtbl->get_maxStack(This, pRetVal))

#define IDiaStackFrame_get_registerValue(This, index, pRetVal)                 \
  ((This)->lpVtbl->get_registerValue(This, index, pRetVal))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackFrame_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumStackFrames_INTERFACE_DEFINED__
#define __IDiaEnumStackFrames_INTERFACE_DEFINED__

  /* interface IDiaEnumStackFrames */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumStackFrames;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("ec9d461d-ce74-4711-a020-7d8f9a1dd255")
  IDiaEnumStackFrames : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [in] */ ULONG celt,
        /* [out] */ IDiaStackFrame * *rgelt,
        /* [out] */ ULONG * pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumStackFramesVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumStackFrames *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumStackFrames *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumStackFrames *This);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumStackFrames *This,
                                     /* [in] */ ULONG celt,
                                     /* [out] */ IDiaStackFrame **rgelt,
                                     /* [out] */ ULONG *pceltFetched);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumStackFrames *This);

    END_INTERFACE
  } IDiaEnumStackFramesVtbl;

  interface IDiaEnumStackFrames
  {
    CONST_VTBL struct IDiaEnumStackFramesVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumStackFrames_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumStackFrames_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumStackFrames_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumStackFrames_Next(This, celt, rgelt, pceltFetched)              \
  ((This)->lpVtbl->Next(This, celt, rgelt, pceltFetched))

#define IDiaEnumStackFrames_Reset(This) ((This)->lpVtbl->Reset(This))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumStackFrames_INTERFACE_DEFINED__ */

  /* interface __MIDL_itf_dia2_0000_0050 */
  /* [local] */

  typedef /* [public] */ struct __MIDL___MIDL_itf_dia2_0000_0050_0001
  {
    DWORD ulOffStart;
    DWORD cbProcSize;
    DWORD cdwLocals;
    WORD cdwParams;
    WORD cdwFlags;
  } FPODATA;

  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0050_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0050_v0_0_s_ifspec;

#ifndef __IDiaStackWalkHelper_INTERFACE_DEFINED__
#define __IDiaStackWalkHelper_INTERFACE_DEFINED__

  /* interface IDiaStackWalkHelper */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackWalkHelper;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("21F81B1B-C5BB-42A3-BC4F-CCBAA75B9F19")
  IDiaStackWalkHelper : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
    get_registerValue(
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG * pRetVal) = 0;

    virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE
    put_registerValue(
        /* [in] */ DWORD index,
        /* [in] */ ULONGLONG NewVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE readMemory(
        /* [in] */ enum MemoryTypeEnum type,
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE searchForReturnAddress(
        /* [in] */ IDiaFrameData * frame,
        /* [out] */ ULONGLONG * returnAddress) = 0;

    virtual HRESULT STDMETHODCALLTYPE searchForReturnAddressStart(
        /* [in] */ IDiaFrameData * frame,
        /* [in] */ ULONGLONG startAddress,
        /* [out] */ ULONGLONG * returnAddress) = 0;

    virtual HRESULT STDMETHODCALLTYPE frameForVA(
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaFrameData * *ppFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE symbolForVA(
        /* [in] */ ULONGLONG va,
        /* [out] */ IDiaSymbol * *ppSymbol) = 0;

    virtual HRESULT STDMETHODCALLTYPE pdataForVA(
        /* [in] */ ULONGLONG va,
        /* [in] */ DWORD cbData,
        /* [out] */ DWORD * pcbData,
        /* [size_is][out] */ BYTE * pbData) = 0;

    virtual HRESULT STDMETHODCALLTYPE imageForVA(
        /* [in] */ ULONGLONG vaContext,
        /* [out] */ ULONGLONG * pvaImageStart) = 0;

    virtual HRESULT STDMETHODCALLTYPE addressForVA(
        /* [in] */ ULONGLONG va,
        /* [out] */ DWORD * pISect,
        /* [out] */ DWORD * pOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE numberOfFunctionFragmentsForVA(
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD * pNumFragments) = 0;

    virtual HRESULT STDMETHODCALLTYPE functionFragmentsForVA(
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [out] */ ULONGLONG * pVaFragment,
        /* [out] */ DWORD * pLenFragment) = 0;
  };

#else /* C style interface */

  typedef struct IDiaStackWalkHelperVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackWalkHelper *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackWalkHelper *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackWalkHelper *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerValue)(
        IDiaStackWalkHelper *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(
        STDMETHODCALLTYPE *put_registerValue)(IDiaStackWalkHelper *This,
                                              /* [in] */ DWORD index,
                                              /* [in] */ ULONGLONG NewVal);

    HRESULT(STDMETHODCALLTYPE *readMemory)(IDiaStackWalkHelper *This,
                                           /* [in] */ enum MemoryTypeEnum type,
                                           /* [in] */ ULONGLONG va,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddress)(
        IDiaStackWalkHelper *This,
        /* [in] */ IDiaFrameData *frame,
        /* [out] */ ULONGLONG *returnAddress);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddressStart)(
        IDiaStackWalkHelper *This,
        /* [in] */ IDiaFrameData *frame,
        /* [in] */ ULONGLONG startAddress,
        /* [out] */ ULONGLONG *returnAddress);

    HRESULT(STDMETHODCALLTYPE *frameForVA)(IDiaStackWalkHelper *This,
                                           /* [in] */ ULONGLONG va,
                                           /* [out] */ IDiaFrameData **ppFrame);

    HRESULT(STDMETHODCALLTYPE *symbolForVA)(IDiaStackWalkHelper *This,
                                            /* [in] */ ULONGLONG va,
                                            /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *pdataForVA)(IDiaStackWalkHelper *This,
                                           /* [in] */ ULONGLONG va,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *imageForVA)(
        IDiaStackWalkHelper *This,
        /* [in] */ ULONGLONG vaContext,
        /* [out] */ ULONGLONG *pvaImageStart);

    HRESULT(STDMETHODCALLTYPE *addressForVA)(IDiaStackWalkHelper *This,
                                             /* [in] */ ULONGLONG va,
                                             /* [out] */ DWORD *pISect,
                                             /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *numberOfFunctionFragmentsForVA)(
        IDiaStackWalkHelper *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *functionFragmentsForVA)(
        IDiaStackWalkHelper *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [out] */ ULONGLONG *pVaFragment,
        /* [out] */ DWORD *pLenFragment);

    END_INTERFACE
  } IDiaStackWalkHelperVtbl;

  interface IDiaStackWalkHelper
  {
    CONST_VTBL struct IDiaStackWalkHelperVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaStackWalkHelper_QueryInterface(This, riid, ppvObject)              \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackWalkHelper_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackWalkHelper_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackWalkHelper_get_registerValue(This, index, pRetVal)            \
  ((This)->lpVtbl->get_registerValue(This, index, pRetVal))

#define IDiaStackWalkHelper_put_registerValue(This, index, NewVal)             \
  ((This)->lpVtbl->put_registerValue(This, index, NewVal))

#define IDiaStackWalkHelper_readMemory(This, type, va, cbData, pcbData,        \
                                       pbData)                                 \
  ((This)->lpVtbl->readMemory(This, type, va, cbData, pcbData, pbData))

#define IDiaStackWalkHelper_searchForReturnAddress(This, frame, returnAddress) \
  ((This)->lpVtbl->searchForReturnAddress(This, frame, returnAddress))

#define IDiaStackWalkHelper_searchForReturnAddressStart(                       \
    This, frame, startAddress, returnAddress)                                  \
  ((This)->lpVtbl->searchForReturnAddressStart(This, frame, startAddress,      \
                                               returnAddress))

#define IDiaStackWalkHelper_frameForVA(This, va, ppFrame)                      \
  ((This)->lpVtbl->frameForVA(This, va, ppFrame))

#define IDiaStackWalkHelper_symbolForVA(This, va, ppSymbol)                    \
  ((This)->lpVtbl->symbolForVA(This, va, ppSymbol))

#define IDiaStackWalkHelper_pdataForVA(This, va, cbData, pcbData, pbData)      \
  ((This)->lpVtbl->pdataForVA(This, va, cbData, pcbData, pbData))

#define IDiaStackWalkHelper_imageForVA(This, vaContext, pvaImageStart)         \
  ((This)->lpVtbl->imageForVA(This, vaContext, pvaImageStart))

#define IDiaStackWalkHelper_addressForVA(This, va, pISect, pOffset)            \
  ((This)->lpVtbl->addressForVA(This, va, pISect, pOffset))

#define IDiaStackWalkHelper_numberOfFunctionFragmentsForVA(                    \
    This, vaFunc, cbFunc, pNumFragments)                                       \
  ((This)->lpVtbl->numberOfFunctionFragmentsForVA(This, vaFunc, cbFunc,        \
                                                  pNumFragments))

#define IDiaStackWalkHelper_functionFragmentsForVA(                            \
    This, vaFunc, cbFunc, cFragments, pVaFragment, pLenFragment)               \
  ((This)->lpVtbl->functionFragmentsForVA(This, vaFunc, cbFunc, cFragments,    \
                                          pVaFragment, pLenFragment))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackWalkHelper_INTERFACE_DEFINED__ */

#ifndef __IDiaStackWalker_INTERFACE_DEFINED__
#define __IDiaStackWalker_INTERFACE_DEFINED__

  /* interface IDiaStackWalker */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackWalker;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("5485216b-a54c-469f-9670-52b24d5229bb")
  IDiaStackWalker : public IUnknown
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE getEnumFrames(
        /* [in] */ IDiaStackWalkHelper * pHelper,
        /* [out] */ IDiaEnumStackFrames * *ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE getEnumFrames2(
        /* [in] */ enum CV_CPU_TYPE_e cpuid,
        /* [in] */ IDiaStackWalkHelper * pHelper,
        /* [out] */ IDiaEnumStackFrames * *ppEnum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaStackWalkerVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackWalker *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackWalker *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackWalker *This);

    HRESULT(STDMETHODCALLTYPE *getEnumFrames)(
        IDiaStackWalker *This,
        /* [in] */ IDiaStackWalkHelper *pHelper,
        /* [out] */ IDiaEnumStackFrames **ppEnum);

    HRESULT(STDMETHODCALLTYPE *getEnumFrames2)(
        IDiaStackWalker *This,
        /* [in] */ enum CV_CPU_TYPE_e cpuid,
        /* [in] */ IDiaStackWalkHelper *pHelper,
        /* [out] */ IDiaEnumStackFrames **ppEnum);

    END_INTERFACE
  } IDiaStackWalkerVtbl;

  interface IDiaStackWalker { CONST_VTBL struct IDiaStackWalkerVtbl *lpVtbl; };

#ifdef COBJMACROS

#define IDiaStackWalker_QueryInterface(This, riid, ppvObject)                  \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackWalker_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackWalker_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackWalker_getEnumFrames(This, pHelper, ppEnum)                   \
  ((This)->lpVtbl->getEnumFrames(This, pHelper, ppEnum))

#define IDiaStackWalker_getEnumFrames2(This, cpuid, pHelper, ppEnum)           \
  ((This)->lpVtbl->getEnumFrames2(This, cpuid, pHelper, ppEnum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackWalker_INTERFACE_DEFINED__ */

#ifndef __IDiaStackWalkHelper2_INTERFACE_DEFINED__
#define __IDiaStackWalkHelper2_INTERFACE_DEFINED__

  /* interface IDiaStackWalkHelper2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackWalkHelper2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("8222c490-507b-4bef-b3bd-41dca7b5934c")
  IDiaStackWalkHelper2 : public IDiaStackWalkHelper
  {
  public:
    virtual HRESULT STDMETHODCALLTYPE GetPointerAuthenticationMask(
        /* [in] */ ULONG64 PtrVal,
        /* [out] */ ULONG64 * AuthMask) = 0;
  };

#else /* C style interface */

  typedef struct IDiaStackWalkHelper2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackWalkHelper2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackWalkHelper2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackWalkHelper2 *This);

    /* [id][helpstring][propget] */ HRESULT(
        STDMETHODCALLTYPE *get_registerValue)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ DWORD index,
        /* [retval][out] */ ULONGLONG *pRetVal);

    /* [id][helpstring][propput] */ HRESULT(
        STDMETHODCALLTYPE *put_registerValue)(IDiaStackWalkHelper2 *This,
                                              /* [in] */ DWORD index,
                                              /* [in] */ ULONGLONG NewVal);

    HRESULT(STDMETHODCALLTYPE *readMemory)(IDiaStackWalkHelper2 *This,
                                           /* [in] */ enum MemoryTypeEnum type,
                                           /* [in] */ ULONGLONG va,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddress)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ IDiaFrameData *frame,
        /* [out] */ ULONGLONG *returnAddress);

    HRESULT(STDMETHODCALLTYPE *searchForReturnAddressStart)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ IDiaFrameData *frame,
        /* [in] */ ULONGLONG startAddress,
        /* [out] */ ULONGLONG *returnAddress);

    HRESULT(STDMETHODCALLTYPE *frameForVA)(IDiaStackWalkHelper2 *This,
                                           /* [in] */ ULONGLONG va,
                                           /* [out] */ IDiaFrameData **ppFrame);

    HRESULT(STDMETHODCALLTYPE *symbolForVA)(IDiaStackWalkHelper2 *This,
                                            /* [in] */ ULONGLONG va,
                                            /* [out] */ IDiaSymbol **ppSymbol);

    HRESULT(STDMETHODCALLTYPE *pdataForVA)(IDiaStackWalkHelper2 *This,
                                           /* [in] */ ULONGLONG va,
                                           /* [in] */ DWORD cbData,
                                           /* [out] */ DWORD *pcbData,
                                           /* [size_is][out] */ BYTE *pbData);

    HRESULT(STDMETHODCALLTYPE *imageForVA)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ ULONGLONG vaContext,
        /* [out] */ ULONGLONG *pvaImageStart);

    HRESULT(STDMETHODCALLTYPE *addressForVA)(IDiaStackWalkHelper2 *This,
                                             /* [in] */ ULONGLONG va,
                                             /* [out] */ DWORD *pISect,
                                             /* [out] */ DWORD *pOffset);

    HRESULT(STDMETHODCALLTYPE *numberOfFunctionFragmentsForVA)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [out] */ DWORD *pNumFragments);

    HRESULT(STDMETHODCALLTYPE *functionFragmentsForVA)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ ULONGLONG vaFunc,
        /* [in] */ DWORD cbFunc,
        /* [in] */ DWORD cFragments,
        /* [out] */ ULONGLONG *pVaFragment,
        /* [out] */ DWORD *pLenFragment);

    HRESULT(STDMETHODCALLTYPE *GetPointerAuthenticationMask)(
        IDiaStackWalkHelper2 *This,
        /* [in] */ ULONG64 PtrVal,
        /* [out] */ ULONG64 *AuthMask);

    END_INTERFACE
  } IDiaStackWalkHelper2Vtbl;

  interface IDiaStackWalkHelper2
  {
    CONST_VTBL struct IDiaStackWalkHelper2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaStackWalkHelper2_QueryInterface(This, riid, ppvObject)             \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackWalkHelper2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackWalkHelper2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackWalkHelper2_get_registerValue(This, index, pRetVal)           \
  ((This)->lpVtbl->get_registerValue(This, index, pRetVal))

#define IDiaStackWalkHelper2_put_registerValue(This, index, NewVal)            \
  ((This)->lpVtbl->put_registerValue(This, index, NewVal))

#define IDiaStackWalkHelper2_readMemory(This, type, va, cbData, pcbData,       \
                                        pbData)                                \
  ((This)->lpVtbl->readMemory(This, type, va, cbData, pcbData, pbData))

#define IDiaStackWalkHelper2_searchForReturnAddress(This, frame,               \
                                                    returnAddress)             \
  ((This)->lpVtbl->searchForReturnAddress(This, frame, returnAddress))

#define IDiaStackWalkHelper2_searchForReturnAddressStart(                      \
    This, frame, startAddress, returnAddress)                                  \
  ((This)->lpVtbl->searchForReturnAddressStart(This, frame, startAddress,      \
                                               returnAddress))

#define IDiaStackWalkHelper2_frameForVA(This, va, ppFrame)                     \
  ((This)->lpVtbl->frameForVA(This, va, ppFrame))

#define IDiaStackWalkHelper2_symbolForVA(This, va, ppSymbol)                   \
  ((This)->lpVtbl->symbolForVA(This, va, ppSymbol))

#define IDiaStackWalkHelper2_pdataForVA(This, va, cbData, pcbData, pbData)     \
  ((This)->lpVtbl->pdataForVA(This, va, cbData, pcbData, pbData))

#define IDiaStackWalkHelper2_imageForVA(This, vaContext, pvaImageStart)        \
  ((This)->lpVtbl->imageForVA(This, vaContext, pvaImageStart))

#define IDiaStackWalkHelper2_addressForVA(This, va, pISect, pOffset)           \
  ((This)->lpVtbl->addressForVA(This, va, pISect, pOffset))

#define IDiaStackWalkHelper2_numberOfFunctionFragmentsForVA(                   \
    This, vaFunc, cbFunc, pNumFragments)                                       \
  ((This)->lpVtbl->numberOfFunctionFragmentsForVA(This, vaFunc, cbFunc,        \
                                                  pNumFragments))

#define IDiaStackWalkHelper2_functionFragmentsForVA(                           \
    This, vaFunc, cbFunc, cFragments, pVaFragment, pLenFragment)               \
  ((This)->lpVtbl->functionFragmentsForVA(This, vaFunc, cbFunc, cFragments,    \
                                          pVaFragment, pLenFragment))

#define IDiaStackWalkHelper2_GetPointerAuthenticationMask(This, PtrVal,        \
                                                          AuthMask)            \
  ((This)->lpVtbl->GetPointerAuthenticationMask(This, PtrVal, AuthMask))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackWalkHelper2_INTERFACE_DEFINED__ */

#ifndef __IDiaStackWalker2_INTERFACE_DEFINED__
#define __IDiaStackWalker2_INTERFACE_DEFINED__

  /* interface IDiaStackWalker2 */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaStackWalker2;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("7c185885-a015-4cac-9411-0f4fb39b1f3a")
  IDiaStackWalker2 : public IDiaStackWalker { public : };

#else /* C style interface */

  typedef struct IDiaStackWalker2Vtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaStackWalker2 *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaStackWalker2 *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaStackWalker2 *This);

    HRESULT(STDMETHODCALLTYPE *getEnumFrames)(
        IDiaStackWalker2 *This,
        /* [in] */ IDiaStackWalkHelper *pHelper,
        /* [out] */ IDiaEnumStackFrames **ppEnum);

    HRESULT(STDMETHODCALLTYPE *getEnumFrames2)(
        IDiaStackWalker2 *This,
        /* [in] */ enum CV_CPU_TYPE_e cpuid,
        /* [in] */ IDiaStackWalkHelper *pHelper,
        /* [out] */ IDiaEnumStackFrames **ppEnum);

    END_INTERFACE
  } IDiaStackWalker2Vtbl;

  interface IDiaStackWalker2
  {
    CONST_VTBL struct IDiaStackWalker2Vtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaStackWalker2_QueryInterface(This, riid, ppvObject)                 \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaStackWalker2_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaStackWalker2_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaStackWalker2_getEnumFrames(This, pHelper, ppEnum)                  \
  ((This)->lpVtbl->getEnumFrames(This, pHelper, ppEnum))

#define IDiaStackWalker2_getEnumFrames2(This, cpuid, pHelper, ppEnum)          \
  ((This)->lpVtbl->getEnumFrames2(This, cpuid, pHelper, ppEnum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaStackWalker2_INTERFACE_DEFINED__ */

#ifndef __IDiaEnumNamedStreams_INTERFACE_DEFINED__
#define __IDiaEnumNamedStreams_INTERFACE_DEFINED__

  /* interface IDiaEnumNamedStreams */
  /* [unique][helpstring][local][uuid][object] */

  EXTERN_C const IID IID_IDiaEnumNamedStreams;

#if defined(__cplusplus) && !defined(CINTERFACE)

  MIDL_INTERFACE("2B01F5E0-98DB-4824-A9A0-5192833BEF47")
  IDiaEnumNamedStreams : public IUnknown
  {
  public:
    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE
        get__NewEnum(
            /* [retval][out] */ IUnknown * *pRetVal) = 0;

    virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count(
        /* [retval][out] */ LONG * pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        /* [out] */ BSTR * pName) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        /* [in] */ ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        /* [out] */ IDiaEnumNamedStreams * *ppenum) = 0;
  };

#else /* C style interface */

  typedef struct IDiaEnumNamedStreamsVtbl
  {
    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(IDiaEnumNamedStreams *This,
                                               /* [in] */ REFIID riid,
                                               /* [annotation][iid_is][out] */
                                               _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(IDiaEnumNamedStreams *This);

    ULONG(STDMETHODCALLTYPE *Release)(IDiaEnumNamedStreams *This);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get__NewEnum)(
        IDiaEnumNamedStreams *This,
        /* [retval][out] */ IUnknown **pRetVal);

    /* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
        IDiaEnumNamedStreams *This,
        /* [retval][out] */ LONG *pRetVal);

    HRESULT(STDMETHODCALLTYPE *Next)(IDiaEnumNamedStreams *This,
                                     /* [out] */ BSTR *pName);

    HRESULT(STDMETHODCALLTYPE *Skip)(IDiaEnumNamedStreams *This,
                                     /* [in] */ ULONG celt);

    HRESULT(STDMETHODCALLTYPE *Reset)(IDiaEnumNamedStreams *This);

    HRESULT(STDMETHODCALLTYPE *Clone)(
        IDiaEnumNamedStreams *This,
        /* [out] */ IDiaEnumNamedStreams **ppenum);

    END_INTERFACE
  } IDiaEnumNamedStreamsVtbl;

  interface IDiaEnumNamedStreams
  {
    CONST_VTBL struct IDiaEnumNamedStreamsVtbl *lpVtbl;
  };

#ifdef COBJMACROS

#define IDiaEnumNamedStreams_QueryInterface(This, riid, ppvObject)             \
  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))

#define IDiaEnumNamedStreams_AddRef(This) ((This)->lpVtbl->AddRef(This))

#define IDiaEnumNamedStreams_Release(This) ((This)->lpVtbl->Release(This))

#define IDiaEnumNamedStreams_get__NewEnum(This, pRetVal)                       \
  ((This)->lpVtbl->get__NewEnum(This, pRetVal))

#define IDiaEnumNamedStreams_get_Count(This, pRetVal)                          \
  ((This)->lpVtbl->get_Count(This, pRetVal))

#define IDiaEnumNamedStreams_Next(This, pName)                                 \
  ((This)->lpVtbl->Next(This, pName))

#define IDiaEnumNamedStreams_Skip(This, celt) ((This)->lpVtbl->Skip(This, celt))

#define IDiaEnumNamedStreams_Reset(This) ((This)->lpVtbl->Reset(This))

#define IDiaEnumNamedStreams_Clone(This, ppenum)                               \
  ((This)->lpVtbl->Clone(This, ppenum))

#endif /* COBJMACROS */

#endif /* C style interface */

#endif /* __IDiaEnumNamedStreams_INTERFACE_DEFINED__ */

  /* Additional Prototypes for ALL interfaces */

  /* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif
