using System;

// namespace Data.Xml.MsXml
namespace Win32
{
	extension Win32
	{
		// --- Constants ---
		
		public const int32 E_XML_NOTWF = -1072897501;
		public const int32 E_XML_NODTD = -1072897500;
		public const int32 E_XML_INVALID = -1072897499;
		public const int32 E_XML_BUFFERTOOSMALL = -1072897498;
		public const uint32 XHR_PROP_ONDATA_ALWAYS = 0;
		public const uint64 XHR_PROP_ONDATA_NEVER = 18446744073709551615uL;
		public const uint32 DISPID_XOBJ_MIN = 65536;
		public const uint32 DISPID_XOBJ_MAX = 131071;
		public const uint32 DISPID_XOBJ_BASE = 65536;
		public const uint32 DISPID_XMLELEMENTCOLLECTION = 65536;
		public const uint32 DISPID_XMLELEMENTCOLLECTION_LENGTH = 65537;
		public const int32 DISPID_XMLELEMENTCOLLECTION_NEWENUM = -4;
		public const uint32 DISPID_XMLELEMENTCOLLECTION_ITEM = 65539;
		public const uint32 DISPID_XMLDOCUMENT = 65636;
		public const uint32 DISPID_XMLDOCUMENT_ROOT = 65637;
		public const uint32 DISPID_XMLDOCUMENT_FILESIZE = 65638;
		public const uint32 DISPID_XMLDOCUMENT_FILEMODIFIEDDATE = 65639;
		public const uint32 DISPID_XMLDOCUMENT_FILEUPDATEDDATE = 65640;
		public const uint32 DISPID_XMLDOCUMENT_URL = 65641;
		public const uint32 DISPID_XMLDOCUMENT_MIMETYPE = 65642;
		public const uint32 DISPID_XMLDOCUMENT_READYSTATE = 65643;
		public const uint32 DISPID_XMLDOCUMENT_CREATEELEMENT = 65644;
		public const uint32 DISPID_XMLDOCUMENT_CHARSET = 65645;
		public const uint32 DISPID_XMLDOCUMENT_VERSION = 65646;
		public const uint32 DISPID_XMLDOCUMENT_DOCTYPE = 65647;
		public const uint32 DISPID_XMLDOCUMENT_DTDURL = 65648;
		public const uint32 DISPID_XMLDOCUMENT_ASYNC = 65649;
		public const uint32 DISPID_XMLDOCUMENT_CASEINSENSITIVE = 65650;
		public const uint32 DISPID_XMLDOCUMENT_BASEURL = 65651;
		public const uint32 DISPID_XMLDOCUMENT_XML = 65652;
		public const uint32 DISPID_XMLDOCUMENT_LASTERROR = 65653;
		public const uint32 DISPID_XMLDOCUMENT_TRIMWHITESPACE = 65654;
		public const uint32 DISPID_XMLDOCUMENT_COMMIT = 65655;
		public const uint32 DISPID_XMLELEMENT = 65736;
		public const uint32 DISPID_XMLELEMENT_TAGNAME = 65737;
		public const uint32 DISPID_XMLELEMENT_PARENT = 65738;
		public const uint32 DISPID_XMLELEMENT_SETATTRIBUTE = 65739;
		public const uint32 DISPID_XMLELEMENT_GETATTRIBUTE = 65740;
		public const uint32 DISPID_XMLELEMENT_REMOVEATTRIBUTE = 65741;
		public const uint32 DISPID_XMLELEMENT_CHILDREN = 65742;
		public const uint32 DISPID_XMLELEMENT_TYPE = 65743;
		public const uint32 DISPID_XMLELEMENT_TEXT = 65744;
		public const uint32 DISPID_XMLELEMENT_ADDCHILD = 65745;
		public const uint32 DISPID_XMLELEMENT_REMOVECHILD = 65746;
		public const uint32 DISPID_XMLELEMENT_ATTRIBUTES = 65747;
		public const uint32 DISPID_XMLNOTIFSINK = 65836;
		public const uint32 DISPID_XMLNOTIFSINK_CHILDADDED = 65837;
		public const uint32 DISPID_XMLATTRIBUTE = 65936;
		public const uint32 DISPID_XMLATTRIBUTE_NAME = 65937;
		public const uint32 DISPID_XMLATTRIBUTE_VALUE = 65938;
		public const uint32 DISPID_XMLERROR = 65936;
		public const uint32 DISPID_XMLERROR_REASON = 65937;
		public const uint32 DISPID_XMLERROR_LINE = 65938;
		public const uint32 DISPID_XMLERROR_POS = 65939;
		public const uint32 DISPID_NODE = 66036;
		public const uint32 DISPID_NODE_NAME = 66037;
		public const uint32 DISPID_NODE_PARENT = 66038;
		public const uint32 DISPID_NODE_TYPE = 66039;
		public const uint32 DISPID_NODE_VALUE = 66040;
		public const uint32 DISPID_NODE_SETATTRIBUTE = 66041;
		public const uint32 DISPID_NODE_GETATTRIBUTE = 66042;
		public const uint32 DISPID_NODE_REMOVEATTRIBUTE = 66043;
		public const uint32 DISPID_NODE_ATTRIBUTES = 66044;
		public const uint32 DISPID_NODE_ADD = 66045;
		public const uint32 DISPID_NODE_REMOVE = 66046;
		public const uint32 DISPID_NODE_CHILDREN = 66047;
		public const uint32 DISPID_NODELIST = 66136;
		public const uint32 DISPID_NODELIST_NEWENUM = 66137;
		public const uint32 DISPID_NODELIST_NEXT = 66138;
		public const uint32 DISPID_NODELIST_CURRENT = 66139;
		public const uint32 DISPID_NODELIST_MOVE = 66140;
		public const uint32 DISPID_NODELIST_MOVETONODE = 66141;
		public const uint32 DISPID_NODELIST_LENGTH = 66142;
		public const uint32 DISPID_NODELIST_ITEM = 66143;
		public const uint32 DISPID_DOM_BASE = 1;
		public const uint32 DISPID_DOM_COLLECTION_BASE = 1000000;
		public const uint32 DISPID_DOM_COLLECTION_MAX = 2999999;
		public const uint32 DISPID_DOM_NODE = 1;
		public const uint32 DISPID_DOM_NODE_NODENAME = 2;
		public const uint32 DISPID_DOM_NODE_NODEVALUE = 3;
		public const uint32 DISPID_DOM_NODE_NODETYPE = 4;
		public const uint32 DISPID_DOM_NODE_NODETYPEENUM = 5;
		public const uint32 DISPID_DOM_NODE_PARENTNODE = 6;
		public const uint32 DISPID_DOM_NODE_CHILDNODES = 7;
		public const uint32 DISPID_DOM_NODE_FIRSTCHILD = 8;
		public const uint32 DISPID_DOM_NODE_LASTCHILD = 9;
		public const uint32 DISPID_DOM_NODE_PREVIOUSSIBLING = 10;
		public const uint32 DISPID_DOM_NODE_NEXTSIBLING = 11;
		public const uint32 DISPID_DOM_NODE_ATTRIBUTES = 12;
		public const uint32 DISPID_DOM_NODE_INSERTBEFORE = 13;
		public const uint32 DISPID_DOM_NODE_REPLACECHILD = 14;
		public const uint32 DISPID_DOM_NODE_REMOVECHILD = 15;
		public const uint32 DISPID_DOM_NODE_APPENDCHILD = 16;
		public const uint32 DISPID_DOM_NODE_HASCHILDNODES = 17;
		public const uint32 DISPID_DOM_NODE_OWNERDOC = 18;
		public const uint32 DISPID_DOM_NODE_CLONENODE = 19;
		public const uint32 DISPID_XMLDOM_NODE = 20;
		public const uint32 DISPID_XMLDOM_NODE_STRINGTYPE = 21;
		public const uint32 DISPID_XMLDOM_NODE_SPECIFIED = 22;
		public const uint32 DISPID_XMLDOM_NODE_DEFINITION = 23;
		public const uint32 DISPID_XMLDOM_NODE_TEXT = 24;
		public const uint32 DISPID_XMLDOM_NODE_NODETYPEDVALUE = 25;
		public const uint32 DISPID_XMLDOM_NODE_DATATYPE = 26;
		public const uint32 DISPID_XMLDOM_NODE_XML = 27;
		public const uint32 DISPID_XMLDOM_NODE_TRANSFORMNODE = 28;
		public const uint32 DISPID_XMLDOM_NODE_SELECTNODES = 29;
		public const uint32 DISPID_XMLDOM_NODE_SELECTSINGLENODE = 30;
		public const uint32 DISPID_XMLDOM_NODE_PARSED = 31;
		public const uint32 DISPID_XMLDOM_NODE_NAMESPACE = 32;
		public const uint32 DISPID_XMLDOM_NODE_PREFIX = 33;
		public const uint32 DISPID_XMLDOM_NODE_BASENAME = 34;
		public const uint32 DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT = 35;
		public const uint32 DISPID_XMLDOM_NODE__TOP = 36;
		public const uint32 DISPID_DOM_DOCUMENT = 37;
		public const uint32 DISPID_DOM_DOCUMENT_DOCTYPE = 38;
		public const uint32 DISPID_DOM_DOCUMENT_IMPLEMENTATION = 39;
		public const uint32 DISPID_DOM_DOCUMENT_DOCUMENTELEMENT = 40;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEELEMENT = 41;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT = 42;
		public const uint32 DISPID_DOM_DOCUMENT_CREATETEXTNODE = 43;
		public const uint32 DISPID_DOM_DOCUMENT_CREATECOMMENT = 44;
		public const uint32 DISPID_DOM_DOCUMENT_CREATECDATASECTION = 45;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION = 46;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEATTRIBUTE = 47;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEENTITY = 48;
		public const uint32 DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE = 49;
		public const uint32 DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME = 50;
		public const uint32 DISPID_DOM_DOCUMENT_TOP = 51;
		public const uint32 DISPID_XMLDOM_DOCUMENT = 52;
		public const uint32 DISPID_XMLDOM_DOCUMENT_DOCUMENTNODE = 53;
		public const uint32 DISPID_XMLDOM_DOCUMENT_CREATENODE = 54;
		public const uint32 DISPID_XMLDOM_DOCUMENT_CREATENODEEX = 55;
		public const uint32 DISPID_XMLDOM_DOCUMENT_NODEFROMID = 56;
		public const uint32 DISPID_XMLDOM_DOCUMENT_DOCUMENTNAMESPACES = 57;
		public const uint32 DISPID_XMLDOM_DOCUMENT_LOAD = 58;
		public const uint32 DISPID_XMLDOM_DOCUMENT_PARSEERROR = 59;
		public const uint32 DISPID_XMLDOM_DOCUMENT_URL = 60;
		public const uint32 DISPID_XMLDOM_DOCUMENT_ASYNC = 61;
		public const uint32 DISPID_XMLDOM_DOCUMENT_ABORT = 62;
		public const uint32 DISPID_XMLDOM_DOCUMENT_LOADXML = 63;
		public const uint32 DISPID_XMLDOM_DOCUMENT_SAVE = 64;
		public const uint32 DISPID_XMLDOM_DOCUMENT_VALIDATE = 65;
		public const uint32 DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE = 66;
		public const uint32 DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE = 67;
		public const uint32 DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE = 68;
		public const uint32 DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE = 69;
		public const uint32 DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE = 70;
		public const uint32 DISPID_XMLDOM_DOCUMENT__TOP = 71;
		public const uint32 DISPID_DOM_NODELIST = 72;
		public const uint32 DISPID_DOM_NODELIST_ITEM = 73;
		public const uint32 DISPID_DOM_NODELIST_LENGTH = 74;
		public const uint32 DISPID_XMLDOM_NODELIST = 75;
		public const uint32 DISPID_XMLDOM_NODELIST_NEXTNODE = 76;
		public const uint32 DISPID_XMLDOM_NODELIST_RESET = 77;
		public const uint32 DISPID_XMLDOM_NODELIST_NEWENUM = 78;
		public const uint32 DISPID_XMLDOM_NODELIST__TOP = 79;
		public const uint32 DISPID_DOM_NAMEDNODEMAP = 80;
		public const uint32 DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM = 83;
		public const uint32 DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM = 84;
		public const uint32 DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM = 85;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP = 86;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM = 87;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM = 88;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE = 89;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP_RESET = 90;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP_NEWENUM = 91;
		public const uint32 DISPID_XMLDOM_NAMEDNODEMAP__TOP = 92;
		public const uint32 DISPID_DOM_W3CWRAPPERS = 93;
		public const uint32 DISPID_DOM_DOCUMENTFRAGMENT = 94;
		public const uint32 DISPID_DOM_DOCUMENTFRAGMENT__TOP = 95;
		public const uint32 DISPID_DOM_ELEMENT = 96;
		public const uint32 DISPID_DOM_ELEMENT_GETTAGNAME = 97;
		public const uint32 DISPID_DOM_ELEMENT_GETATTRIBUTES = 98;
		public const uint32 DISPID_DOM_ELEMENT_GETATTRIBUTE = 99;
		public const uint32 DISPID_DOM_ELEMENT_SETATTRIBUTE = 100;
		public const uint32 DISPID_DOM_ELEMENT_REMOVEATTRIBUTE = 101;
		public const uint32 DISPID_DOM_ELEMENT_GETATTRIBUTENODE = 102;
		public const uint32 DISPID_DOM_ELEMENT_SETATTRIBUTENODE = 103;
		public const uint32 DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE = 104;
		public const uint32 DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME = 105;
		public const uint32 DISPID_DOM_ELEMENT_NORMALIZE = 106;
		public const uint32 DISPID_DOM_ELEMENT__TOP = 107;
		public const uint32 DISPID_DOM_DATA = 108;
		public const uint32 DISPID_DOM_DATA_DATA = 109;
		public const uint32 DISPID_DOM_DATA_LENGTH = 110;
		public const uint32 DISPID_DOM_DATA_SUBSTRING = 111;
		public const uint32 DISPID_DOM_DATA_APPEND = 112;
		public const uint32 DISPID_DOM_DATA_INSERT = 113;
		public const uint32 DISPID_DOM_DATA_DELETE = 114;
		public const uint32 DISPID_DOM_DATA_REPLACE = 115;
		public const uint32 DISPID_DOM_DATA__TOP = 116;
		public const uint32 DISPID_DOM_ATTRIBUTE = 117;
		public const uint32 DISPID_DOM_ATTRIBUTE_GETNAME = 118;
		public const uint32 DISPID_DOM_ATTRIBUTE_SPECIFIED = 119;
		public const uint32 DISPID_DOM_ATTRIBUTE_VALUE = 120;
		public const uint32 DISPID_DOM_ATTRIBUTE__TOP = 121;
		public const uint32 DISPID_DOM_TEXT = 122;
		public const uint32 DISPID_DOM_TEXT_SPLITTEXT = 123;
		public const uint32 DISPID_DOM_TEXT_JOINTEXT = 124;
		public const uint32 DISPID_DOM_TEXT__TOP = 125;
		public const uint32 DISPID_DOM_PI = 126;
		public const uint32 DISPID_DOM_PI_TARGET = 127;
		public const uint32 DISPID_DOM_PI_DATA = 128;
		public const uint32 DISPID_DOM_PI__TOP = 129;
		public const uint32 DISPID_DOM_DOCUMENTTYPE = 130;
		public const uint32 DISPID_DOM_DOCUMENTTYPE_NAME = 131;
		public const uint32 DISPID_DOM_DOCUMENTTYPE_ENTITIES = 132;
		public const uint32 DISPID_DOM_DOCUMENTTYPE_NOTATIONS = 133;
		public const uint32 DISPID_DOM_DOCUMENTTYPE__TOP = 134;
		public const uint32 DISPID_DOM_NOTATION = 135;
		public const uint32 DISPID_DOM_NOTATION_PUBLICID = 136;
		public const uint32 DISPID_DOM_NOTATION_SYSTEMID = 137;
		public const uint32 DISPID_DOM_NOTATION__TOP = 138;
		public const uint32 DISPID_DOM_ENTITY = 139;
		public const uint32 DISPID_DOM_ENTITY_PUBLICID = 140;
		public const uint32 DISPID_DOM_ENTITY_SYSTEMID = 141;
		public const uint32 DISPID_DOM_ENTITY_NOTATIONNAME = 142;
		public const uint32 DISPID_DOM_ENTITY__TOP = 143;
		public const uint32 DISPID_DOM_W3CWRAPPERS_TOP = 143;
		public const uint32 DISPID_DOM_IMPLEMENTATION = 144;
		public const uint32 DISPID_DOM_IMPLEMENTATION_HASFEATURE = 145;
		public const uint32 DISPID_DOM_IMPLEMENTATION__TOP = 146;
		public const uint32 DISPID_DOM__TOP = 176;
		public const uint32 DISPID_DOM_ERROR = 177;
		public const uint32 DISPID_DOM_ERROR_ERRORCODE = 178;
		public const uint32 DISPID_DOM_ERROR_URL = 179;
		public const uint32 DISPID_DOM_ERROR_REASON = 180;
		public const uint32 DISPID_DOM_ERROR_SRCTEXT = 181;
		public const uint32 DISPID_DOM_ERROR_LINE = 182;
		public const uint32 DISPID_DOM_ERROR_LINEPOS = 183;
		public const uint32 DISPID_DOM_ERROR_FILEPOS = 184;
		public const uint32 DISPID_DOM_ERROR__TOP = 185;
		public const uint32 DISPID_DOM_ERROR2 = 186;
		public const uint32 DISPID_DOM_ERROR2_ALLERRORS = 187;
		public const uint32 DISPID_DOM_ERROR2_ERRORPARAMETERS = 188;
		public const uint32 DISPID_DOM_ERROR2_ERRORPARAMETERSCOUNT = 189;
		public const uint32 DISPID_DOM_ERROR2_ERRORXPATH = 190;
		public const uint32 DISPID_DOM_ERROR2__TOP = 191;
		public const uint32 DISPID_DOM_ERRORCOLLECTION = 192;
		public const uint32 DISPID_DOM_ERRORCOLLECTION_LENGTH = 193;
		public const uint32 DISPID_DOM_ERRORCOLLECTION_NEXT = 194;
		public const uint32 DISPID_DOM_ERRORCOLLECTION_RESET = 195;
		public const uint32 DISPID_DOM_ERRORCOLLECTION__TOP = 196;
		public const uint32 DISPID_XTLRUNTIME = 186;
		public const uint32 DISPID_XTLRUNTIME_UNIQUEID = 187;
		public const uint32 DISPID_XTLRUNTIME_DEPTH = 188;
		public const uint32 DISPID_XTLRUNTIME_CHILDNUMBER = 189;
		public const uint32 DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER = 190;
		public const uint32 DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER = 191;
		public const uint32 DISPID_XTLRUNTIME_FORMATINDEX = 192;
		public const uint32 DISPID_XTLRUNTIME_FORMATNUMBER = 193;
		public const uint32 DISPID_XTLRUNTIME_FORMATDATE = 194;
		public const uint32 DISPID_XTLRUNTIME_FORMATTIME = 195;
		public const uint32 DISPID_XTLRUNTIME__TOP = 196;
		public const uint32 DISPID_XMLDOMEVENT = 197;
		public const int32 DISPID_XMLDOMEVENT_ONREADYSTATECHANGE = -609;
		public const uint32 DISPID_XMLDOMEVENT_ONDATAAVAILABLE = 198;
		public const uint32 DISPID_XMLDOMEVENT__TOP = 199;
		public const uint32 DISPID_XMLDOM_DOCUMENT2 = 200;
		public const uint32 DISPID_XMLDOM_DOCUMENT2_NAMESPACES = 201;
		public const uint32 DISPID_XMLDOM_DOCUMENT2_SCHEMAS = 202;
		public const uint32 DISPID_XMLDOM_DOCUMENT2_VALIDATE = 203;
		public const uint32 DISPID_XMLDOM_DOCUMENT2_SETPROPERTY = 204;
		public const uint32 DISPID_XMLDOM_DOCUMENT2_GETPROPERTY = 205;
		public const uint32 DISPID_XMLDOM_DOCUMENT2__TOP = 206;
		public const uint32 DISPID_XMLDOM_DOCUMENT3 = 207;
		public const uint32 DISPID_XMLDOM_DOCUMENT3_VALIDATENODE = 208;
		public const uint32 DISPID_XMLDOM_DOCUMENT3_IMPORTNODE = 209;
		public const uint32 DISPID_XMLDOM_DOCUMENT3__TOP = 210;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION = 2;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_ADD = 3;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_GET = 4;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE = 5;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH = 6;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_NAMESPACEURI = 7;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION = 8;
		public const uint32 DISPID_XMLDOM_SCHEMACOLLECTION__TOP = 9;
		public const uint32 DISPID_XMLDOM_SELECTION = 80;
		public const uint32 DISPID_XMLDOM_SELECTION_EXPR = 81;
		public const uint32 DISPID_XMLDOM_SELECTION_CONTEXT = 82;
		public const uint32 DISPID_XMLDOM_SELECTION_PEEKNODE = 83;
		public const uint32 DISPID_XMLDOM_SELECTION_MATCHES = 84;
		public const uint32 DISPID_XMLDOM_SELECTION_REMOVENEXT = 85;
		public const uint32 DISPID_XMLDOM_SELECTION_REMOVEALL = 86;
		public const uint32 DISPID_XMLDOM_SELECTION_CLONE = 87;
		public const uint32 DISPID_XMLDOM_SELECTION_GETPROPERTY = 88;
		public const uint32 DISPID_XMLDOM_SELECTION_SETPROPERTY = 89;
		public const uint32 DISPID_XMLDOM_SELECTION__TOP = 90;
		public const uint32 DISPID_XMLDOM_TEMPLATE = 1;
		public const uint32 DISPID_XMLDOM_TEMPLATE_STYLESHEET = 2;
		public const uint32 DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR = 3;
		public const uint32 DISPID_XMLDOM_TEMPLATE__TOP = 4;
		public const uint32 DISPID_XMLDOM_PROCESSOR = 1;
		public const uint32 DISPID_XMLDOM_PROCESSOR_INPUT = 2;
		public const uint32 DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE = 3;
		public const uint32 DISPID_XMLDOM_PROCESSOR_SETSTARTMODE = 4;
		public const uint32 DISPID_XMLDOM_PROCESSOR_STARTMODE = 5;
		public const uint32 DISPID_XMLDOM_PROCESSOR_STARTMODEURI = 6;
		public const uint32 DISPID_XMLDOM_PROCESSOR_OUTPUT = 7;
		public const uint32 DISPID_XMLDOM_PROCESSOR_TRANSFORM = 8;
		public const uint32 DISPID_XMLDOM_PROCESSOR_RESET = 9;
		public const uint32 DISPID_XMLDOM_PROCESSOR_READYSTATE = 10;
		public const uint32 DISPID_XMLDOM_PROCESSOR_ADDPARAMETER = 11;
		public const uint32 DISPID_XMLDOM_PROCESSOR_ADDOBJECT = 12;
		public const uint32 DISPID_XMLDOM_PROCESSOR_STYLESHEET = 13;
		public const uint32 DISPID_XMLDOM_PROCESSOR__TOP = 14;
		public const uint32 DISPID_XMLDSO = 65536;
		public const uint32 DISPID_XMLDSO_DOCUMENT = 65537;
		public const uint32 DISPID_XMLDSO_JAVADSOCOMPATIBLE = 65538;
		public const uint32 DISPID_SAX_XMLREADER__MIN = 1281;
		public const uint32 DISPID_SAX_XMLREADER__MAX = 65536;
		public const uint32 DISPID_SAX_XMLREADER__BASE = 1281;
		public const uint32 DISPID_SAX_XMLREADER = 1281;
		public const uint32 DISPID_SAX_XMLREADER_GETFEATURE = 1282;
		public const uint32 DISPID_SAX_XMLREADER_PUTFEATURE = 1283;
		public const uint32 DISPID_SAX_XMLREADER_GETPROPERTY = 1284;
		public const uint32 DISPID_SAX_XMLREADER_PUTPROPERTY = 1285;
		public const uint32 DISPID_SAX_XMLREADER_ENTITYRESOLVER = 1286;
		public const uint32 DISPID_SAX_XMLREADER_CONTENTHANDLER = 1287;
		public const uint32 DISPID_SAX_XMLREADER_DTDHANDLER = 1288;
		public const uint32 DISPID_SAX_XMLREADER_ERRORHANDLER = 1289;
		public const uint32 DISPID_SAX_XMLREADER_BASEURL = 1290;
		public const uint32 DISPID_SAX_XMLREADER_SECUREBASEURL = 1291;
		public const uint32 DISPID_SAX_XMLREADER_PARSE = 1292;
		public const uint32 DISPID_SAX_XMLREADER_PARSEURL = 1293;
		public const uint32 DISPID_SAX_XMLREADER_PARENT = 1294;
		public const uint32 DISPID_SAX_XMLREADER__TOP = 1295;
		public const uint32 DISPID_SAX_XMLFILTER__BASE = 1296;
		public const uint32 DISPID_SAX_XMLFILTER = 1296;
		public const uint32 DISPID_SAX_XMLFILTER_GETFEATURE = 1297;
		public const uint32 DISPID_SAX_XMLFILTER_PUTFEATURE = 1298;
		public const uint32 DISPID_SAX_XMLFILTER_GETPROPERTY = 1299;
		public const uint32 DISPID_SAX_XMLFILTER_PUTPROPERTY = 1300;
		public const uint32 DISPID_SAX_XMLFILTER_ENTITYRESOLVER = 1301;
		public const uint32 DISPID_SAX_XMLFILTER_CONTENTHANDLER = 1302;
		public const uint32 DISPID_SAX_XMLFILTER_DTDHANDLER = 1303;
		public const uint32 DISPID_SAX_XMLFILTER_ERRORHANDLER = 1304;
		public const uint32 DISPID_SAX_XMLFILTER_BASEURL = 1305;
		public const uint32 DISPID_SAX_XMLFILTER_SECUREBASEURL = 1306;
		public const uint32 DISPID_SAX_XMLFILTER_PARSE = 1307;
		public const uint32 DISPID_SAX_XMLFILTER_PARSEURL = 1308;
		public const uint32 DISPID_SAX_XMLFILTER_PARENT = 1309;
		public const uint32 DISPID_SAX_XMLFILTER__TOP = 1311;
		public const uint32 DISPID_SAX_LOCATOR__BASE = 1312;
		public const uint32 DISPID_SAX_LOCATOR = 1312;
		public const uint32 DISPID_SAX_LOCATOR_COLUMNNUMBER = 1313;
		public const uint32 DISPID_SAX_LOCATOR_LINENUMBER = 1314;
		public const uint32 DISPID_SAX_LOCATOR_PUBLICID = 1315;
		public const uint32 DISPID_SAX_LOCATOR_SYSTEMID = 1316;
		public const uint32 DISPID_SAX_LOCATOR__TOP = 1317;
		public const uint32 DISPID_SAX_ENTITYRESOLVER__BASE = 1318;
		public const uint32 DISPID_SAX_ENTITYRESOLVER = 1318;
		public const uint32 DISPID_SAX_ENTITYRESOLVER_RESOLVEENTITY = 1319;
		public const uint32 DISPID_SAX_ENTITYRESOLVER__TOP = 1320;
		public const uint32 DISPID_SAX_CONTENTHANDLER__BASE = 1321;
		public const uint32 DISPID_SAX_CONTENTHANDLER = 1321;
		public const uint32 DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR = 1322;
		public const uint32 DISPID_SAX_CONTENTHANDLER_STARTDOCUMENT = 1323;
		public const uint32 DISPID_SAX_CONTENTHANDLER_ENDDOCUMENT = 1324;
		public const uint32 DISPID_SAX_CONTENTHANDLER_STARTPREFIXMAPPING = 1325;
		public const uint32 DISPID_SAX_CONTENTHANDLER_ENDPREFIXMAPPING = 1326;
		public const uint32 DISPID_SAX_CONTENTHANDLER_STARTELEMENT = 1327;
		public const uint32 DISPID_SAX_CONTENTHANDLER_ENDELEMENT = 1328;
		public const uint32 DISPID_SAX_CONTENTHANDLER_CHARACTERS = 1329;
		public const uint32 DISPID_SAX_CONTENTHANDLER_IGNORABLEWHITESPACE = 1330;
		public const uint32 DISPID_SAX_CONTENTHANDLER_PROCESSINGINSTRUCTION = 1331;
		public const uint32 DISPID_SAX_CONTENTHANDLER_SKIPPEDENTITY = 1332;
		public const uint32 DISPID_SAX_CONTENTHANDLER__TOP = 1333;
		public const uint32 DISPID_SAX_DTDHANDLER__BASE = 1334;
		public const uint32 DISPID_SAX_DTDHANDLER = 1334;
		public const uint32 DISPID_SAX_DTDHANDLER_NOTATIONDECL = 1335;
		public const uint32 DISPID_SAX_DTDHANDLER_UNPARSEDENTITYDECL = 1336;
		public const uint32 DISPID_SAX_DTDHANDLER__TOP = 1337;
		public const uint32 DISPID_SAX_ERRORHANDLER__BASE = 1338;
		public const uint32 DISPID_SAX_ERRORHANDLER = 1338;
		public const uint32 DISPID_SAX_ERRORHANDLER_ERROR = 1339;
		public const uint32 DISPID_SAX_ERRORHANDLER_FATALERROR = 1340;
		public const uint32 DISPID_SAX_ERRORHANDLER_IGNORABLEWARNING = 1341;
		public const uint32 DISPID_SAX_ERRORHANDLER__TOP = 1342;
		public const uint32 DISPID_SAX_ATTRIBUTES__BASE = 1343;
		public const uint32 DISPID_SAX_ATTRIBUTES = 1343;
		public const uint32 DISPID_SAX_ATTRIBUTES_LENGTH = 1344;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETURI = 1345;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETLOCALNAME = 1346;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETQNAME = 1347;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETINDEXFROMNAME = 1348;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETINDEXFROMQNAME = 1349;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETTYPE = 1350;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETTYPEFROMNAME = 1351;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETTYPEFROMQNAME = 1352;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETVALUE = 1353;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETVALUEFROMNAME = 1354;
		public const uint32 DISPID_SAX_ATTRIBUTES_GETVALUEFROMQNAME = 1355;
		public const uint32 DISPID_SAX_ATTRIBUTES__TOP = 1356;
		public const uint32 DISPID_SAX_LEXICALHANDLER__BASE = 1357;
		public const uint32 DISPID_SAX_LEXICALHANDLER = 1357;
		public const uint32 DISPID_SAX_LEXICALHANDLER_STARTDTD = 1358;
		public const uint32 DISPID_SAX_LEXICALHANDLER_ENDDTD = 1359;
		public const uint32 DISPID_SAX_LEXICALHANDLER_STARTENTITY = 1360;
		public const uint32 DISPID_SAX_LEXICALHANDLER_ENDENTITY = 1361;
		public const uint32 DISPID_SAX_LEXICALHANDLER_STARTCDATA = 1362;
		public const uint32 DISPID_SAX_LEXICALHANDLER_ENDCDATA = 1363;
		public const uint32 DISPID_SAX_LEXICALHANDLER_COMMENT = 1364;
		public const uint32 DISPID_SAX_LEXICALHANDLER__TOP = 1365;
		public const uint32 DISPID_SAX_DECLHANDLER__BASE = 1366;
		public const uint32 DISPID_SAX_DECLHANDLER = 1366;
		public const uint32 DISPID_SAX_DECLHANDLER_ELEMENTDECL = 1367;
		public const uint32 DISPID_SAX_DECLHANDLER_ATTRIBUTEDECL = 1368;
		public const uint32 DISPID_SAX_DECLHANDLER_INTERNALENTITYDECL = 1369;
		public const uint32 DISPID_SAX_DECLHANDLER_EXTERNALENTITYDECL = 1370;
		public const uint32 DISPID_SAX_DECLHANDLER__TOP = 1371;
		public const uint32 DISPID_MX_ATTRIBUTES__BASE = 1372;
		public const uint32 DISPID_MX_ATTRIBUTES = 1372;
		public const uint32 DISPID_MX_ATTRIBUTES_ADDATTRIBUTE = 1373;
		public const uint32 DISPID_MX_ATTRIBUTES_CLEAR = 1374;
		public const uint32 DISPID_MX_ATTRIBUTES_REMOVEATTRIBUTE = 1375;
		public const uint32 DISPID_MX_ATTRIBUTES_SETATTRIBUTE = 1376;
		public const uint32 DISPID_MX_ATTRIBUTES_SETATTRIBUTES = 1377;
		public const uint32 DISPID_MX_ATTRIBUTES_SETLOCALNAME = 1378;
		public const uint32 DISPID_MX_ATTRIBUTES_SETQNAME = 1379;
		public const uint32 DISPID_MX_ATTRIBUTES_SETTYPE = 1380;
		public const uint32 DISPID_MX_ATTRIBUTES_SETURI = 1381;
		public const uint32 DISPID_MX_ATTRIBUTES_SETVALUE = 1382;
		public const uint32 DISPID_MX_ATTRIBUTES_ADDATTRIBUTEFROMINDEX = 1383;
		public const uint32 DISPID_MX_ATTRIBUTES__TOP = 1383;
		public const uint32 DISPID_MX_WRITER__BASE = 1384;
		public const uint32 DISPID_MX_WRITER = 1384;
		public const uint32 DISPID_MX_WRITER_OUTPUT = 1385;
		public const uint32 DISPID_MX_WRITER_DESTINATION = 1386;
		public const uint32 DISPID_MX_WRITER_ENCODING = 1387;
		public const uint32 DISPID_MX_WRITER_BYTEORDERMARK = 1388;
		public const uint32 DISPID_MX_WRITER_INDENT = 1389;
		public const uint32 DISPID_MX_WRITER_STANDALONE = 1390;
		public const uint32 DISPID_MX_WRITER_OMITXMLDECLARATION = 1391;
		public const uint32 DISPID_MX_WRITER_VERSION = 1392;
		public const uint32 DISPID_MX_WRITER_DISABLEOUTPUTESCAPING = 1393;
		public const uint32 DISPID_MX_WRITER_FLUSH = 1394;
		public const uint32 DISPID_MX_WRITER_RESET = 1395;
		public const uint32 DISPID_MX_WRITER__TOP = 1396;
		public const uint32 DISPID_MX_READER_CONTROL__BASE = 1397;
		public const uint32 DISPID_MX_READER_CONTROL = 1397;
		public const uint32 DISPID_MX_READER_CONTROL_ABORT = 1398;
		public const uint32 DISPID_MX_READER_CONTROL_RESUME = 1399;
		public const uint32 DISPID_MX_READER_CONTROL_SUSPEND = 1400;
		public const uint32 DISPID_MX_READER_CONTROL__TOP = 1401;
		public const uint32 DISPID_MX_SCHEMADECLHANDLER__BASE = 1402;
		public const uint32 DISPID_MX_SCHEMADECLHANDLER = 1402;
		public const uint32 DISPID_MX_SCHEMADECLHANDLER_SCHEMAELEMENTDECL = 1403;
		public const uint32 DISPID_MX_SCHEMADECLHANDLER__TOP = 1404;
		public const uint32 DISPID_MX_NSMGR__BASE = 1405;
		public const uint32 DISPID_MX_NSMGR = 1405;
		public const uint32 DISPID_MX_NSMGR_ALLOWOVERRIDE = 1406;
		public const uint32 DISPID_MX_NSMGR_RESET = 1407;
		public const uint32 DISPID_MX_NSMGR_PUSHCONTEXT = 1408;
		public const uint32 DISPID_MX_NSMGR_PUSHNODECONTEXT = 1409;
		public const uint32 DISPID_MX_NSMGR_POPCONTEXT = 1410;
		public const uint32 DISPID_MX_NSMGR_DECLAREPREFIX = 1411;
		public const uint32 DISPID_MX_NSMGR_GETDECLAREDPREFIXES = 1412;
		public const uint32 DISPID_MX_NSMGR_GETPREFIXES = 1413;
		public const uint32 DISPID_MX_NSMGR_GETURI = 1414;
		public const uint32 DISPID_MX_NSMGR_GETURIFROMNODE = 1415;
		public const uint32 DISPID_MX_NSMGR_LENGTH = 1416;
		public const uint32 DISPID_MX_NSMGR__TOP = 1417;
		public const uint32 DISPID_MXXML_FILTER__BASE = 1418;
		public const uint32 DISPID_MXXML_FILTER = 1418;
		public const uint32 DISPID_MXXML_FILTER_CONTENTHANDLER = 1419;
		public const uint32 DISPID_MXXML_FILTER_DTDHANDLER = 1420;
		public const uint32 DISPID_MXXML_FILTER_ENTITYRESOLVER = 1421;
		public const uint32 DISPID_MXXML_FILTER_ERRORHANDLER = 1422;
		public const uint32 DISPID_MXXML_FILTER_GETFEATURE = 1423;
		public const uint32 DISPID_MXXML_FILTER_GETPROPERTY = 1424;
		public const uint32 DISPID_MXXML_FILTER_PUTFEATURE = 1425;
		public const uint32 DISPID_MXXML_FILTER_PUTPROPERTY = 1426;
		public const uint32 DISPID_MXXML_FILTER__TOP = 1427;
		public const uint32 DISPID_SOM = 1418;
		public const uint32 DISPID_SOM_VALIDATE = 1419;
		public const uint32 DISPID_SOM_VALIDATEONLOAD = 1420;
		public const uint32 DISPID_SOM_GETSCHEMA = 1421;
		public const uint32 DISPID_SOM_GETDECLARATION = 1422;
		public const uint32 DISPID_SOM_ITEMBYNAME = 1423;
		public const uint32 DISPID_SOM_ITEMBYQNAME = 1424;
		public const uint32 DISPID_SOM_ANYATTRIBUTE = 1425;
		public const uint32 DISPID_SOM_ATTRIBUTEGROUPS = 1426;
		public const uint32 DISPID_SOM_ATTRIBUTES = 1427;
		public const uint32 DISPID_SOM_BASETYPES = 1428;
		public const uint32 DISPID_SOM_CONTENTMODEL = 1429;
		public const uint32 DISPID_SOM_CONTENTTYPE = 1430;
		public const uint32 DISPID_SOM_DEFAULTVALUE = 1431;
		public const uint32 DISPID_SOM_DERIVEDBY = 1432;
		public const uint32 DISPID_SOM_DISALLOWED = 1433;
		public const uint32 DISPID_SOM_ELEMENTS = 1434;
		public const uint32 DISPID_SOM_ENUMERATION = 1435;
		public const uint32 DISPID_SOM_FIELDS = 1436;
		public const uint32 DISPID_SOM_FINAL = 1437;
		public const uint32 DISPID_SOM_FIXEDVALUE = 1438;
		public const uint32 DISPID_SOM_FRACTIONDIGITS = 1439;
		public const uint32 DISPID_SOM_ID = 1440;
		public const uint32 DISPID_SOM_IDCONSTRAINTS = 1441;
		public const uint32 DISPID_SOM_ISABSTRACT = 1442;
		public const uint32 DISPID_SOM_ISNILLABLE = 1443;
		public const uint32 DISPID_SOM_ISREFERENCE = 1444;
		public const uint32 DISPID_SOM_ISVALID = 1445;
		public const uint32 DISPID_SOM_ITEMTYPE = 1446;
		public const uint32 DISPID_SOM_LENGTH = 1447;
		public const uint32 DISPID_SOM_MAXEXCLUSIVE = 1448;
		public const uint32 DISPID_SOM_MAXINCLUSIVE = 1449;
		public const uint32 DISPID_SOM_MAXLENGTH = 1450;
		public const uint32 DISPID_SOM_MAXOCCURS = 1451;
		public const uint32 DISPID_SOM_MINEXCLUSIVE = 1452;
		public const uint32 DISPID_SOM_MININCLUSIVE = 1453;
		public const uint32 DISPID_SOM_MINLENGTH = 1454;
		public const uint32 DISPID_SOM_MINOCCURS = 1455;
		public const uint32 DISPID_SOM_MODELGROUPS = 1456;
		public const uint32 DISPID_SOM_NAME = 1457;
		public const uint32 DISPID_SOM_NAMESPACES = 1458;
		public const uint32 DISPID_SOM_NAMESPACEURI = 1459;
		public const uint32 DISPID_SOM_NOTATIONS = 1460;
		public const uint32 DISPID_SOM_PARTICLES = 1461;
		public const uint32 DISPID_SOM_PATTERNS = 1462;
		public const uint32 DISPID_SOM_PROCESSCONTENTS = 1463;
		public const uint32 DISPID_SOM_PROHIBITED = 1464;
		public const uint32 DISPID_SOM_PUBLICIDENTIFIER = 1465;
		public const uint32 DISPID_SOM_REFERENCEDKEY = 1466;
		public const uint32 DISPID_SOM_SCHEMA = 1467;
		public const uint32 DISPID_SOM_SCHEMALOCATIONS = 1468;
		public const uint32 DISPID_SOM_SCOPE = 1469;
		public const uint32 DISPID_SOM_SELECTOR = 1470;
		public const uint32 DISPID_SOM_SUBSTITUTIONGROUP = 1471;
		public const uint32 DISPID_SOM_EXCLUSIONS = 1472;
		public const uint32 DISPID_SOM_SYSTEMIDENTIFIER = 1473;
		public const uint32 DISPID_SOM_TARGETNAMESPACE = 1474;
		public const uint32 DISPID_SOM_TOTALDIGITS = 1475;
		public const uint32 DISPID_SOM_TYPE = 1476;
		public const uint32 DISPID_SOM_TYPES = 1477;
		public const uint32 DISPID_SOM_UNHANDLEDATTRS = 1478;
		public const uint32 DISPID_SOM_USE = 1479;
		public const uint32 DISPID_SOM_VARIETY = 1480;
		public const uint32 DISPID_SOM_VERSION = 1481;
		public const uint32 DISPID_SOM_WHITESPACE = 1482;
		public const uint32 DISPID_SOM_WRITEANNOTATION = 1483;
		public const uint32 DISPID_SOM_TOP = 1484;
		public const uint32 DISPID_XMLDSIG = 1;
		public const uint32 DISPID_XMLDSIG_CREATEKEYFROMCSP = 1;
		public const uint32 DISPID_XMLDSIG_CREATEKEYFROMHMACSECRET = 2;
		public const uint32 DISPID_XMLDSIG_CREATEKEYFROMNODE = 3;
		public const uint32 DISPID_XMLDSIG_CREATESAXPROXY = 4;
		public const uint32 DISPID_XMLDSIG_GETVERIFYINGCERTIFICATE = 5;
		public const uint32 DISPID_XMLDSIG_SETREFERENCEDATA = 6;
		public const uint32 DISPID_XMLDSIG_SIGN = 7;
		public const uint32 DISPID_XMLDSIG_SIGNATURE = 8;
		public const uint32 DISPID_XMLDSIG_STORE = 9;
		public const uint32 DISPID_XMLDSIG_VERIFY = 10;
		
		// --- Enums ---
		
		public enum DOMNodeType : int32
		{
			INVALID = 0,
			ELEMENT = 1,
			ATTRIBUTE = 2,
			TEXT = 3,
			CDATA_SECTION = 4,
			ENTITY_REFERENCE = 5,
			ENTITY = 6,
			PROCESSING_INSTRUCTION = 7,
			COMMENT = 8,
			DOCUMENT = 9,
			DOCUMENT_TYPE = 10,
			DOCUMENT_FRAGMENT = 11,
			NOTATION = 12,
		}
		public enum XMLEMEM_TYPE : int32
		{
			ELEMENT = 0,
			TEXT = 1,
			COMMENT = 2,
			DOCUMENT = 3,
			DTD = 4,
			PI = 5,
			OTHER = 6,
		}
		public enum SERVERXMLHTTP_OPTION : int32
		{
			URL = -1,
			URL_CODEPAGE = 0,
			ESCAPE_PERCENT_IN_URL = 1,
			IGNORE_SERVER_SSL_CERT_ERROR_FLAGS = 2,
			SELECT_CLIENT_SSL_CERT = 3,
		}
		public enum SXH_SERVER_CERT_OPTION : int32
		{
			UNKNOWN_CA = 256,
			WRONG_USAGE = 512,
			CERT_CN_INVALID = 4096,
			CERT_DATE_INVALID = 8192,
			ALL_SERVER_ERRORS = 13056,
		}
		[AllowDuplicates]
		public enum SXH_PROXY_SETTING : int32
		{
			DEFAULT = 0,
			PRECONFIG = 0,
			DIRECT = 1,
			PROXY = 2,
		}
		public enum SOMITEMTYPE : int32
		{
			SCHEMA = 4096,
			ATTRIBUTE = 4097,
			ATTRIBUTEGROUP = 4098,
			NOTATION = 4099,
			ANNOTATION = 4100,
			IDENTITYCONSTRAINT = 4352,
			KEY = 4353,
			KEYREF = 4354,
			UNIQUE = 4355,
			ANYTYPE = 8192,
			DATATYPE = 8448,
			DATATYPE_ANYTYPE = 8449,
			DATATYPE_ANYURI = 8450,
			DATATYPE_BASE64BINARY = 8451,
			DATATYPE_BOOLEAN = 8452,
			DATATYPE_BYTE = 8453,
			DATATYPE_DATE = 8454,
			DATATYPE_DATETIME = 8455,
			DATATYPE_DAY = 8456,
			DATATYPE_DECIMAL = 8457,
			DATATYPE_DOUBLE = 8458,
			DATATYPE_DURATION = 8459,
			DATATYPE_ENTITIES = 8460,
			DATATYPE_ENTITY = 8461,
			DATATYPE_FLOAT = 8462,
			DATATYPE_HEXBINARY = 8463,
			DATATYPE_ID = 8464,
			DATATYPE_IDREF = 8465,
			DATATYPE_IDREFS = 8466,
			DATATYPE_INT = 8467,
			DATATYPE_INTEGER = 8468,
			DATATYPE_LANGUAGE = 8469,
			DATATYPE_LONG = 8470,
			DATATYPE_MONTH = 8471,
			DATATYPE_MONTHDAY = 8472,
			DATATYPE_NAME = 8473,
			DATATYPE_NCNAME = 8474,
			DATATYPE_NEGATIVEINTEGER = 8475,
			DATATYPE_NMTOKEN = 8476,
			DATATYPE_NMTOKENS = 8477,
			DATATYPE_NONNEGATIVEINTEGER = 8478,
			DATATYPE_NONPOSITIVEINTEGER = 8479,
			DATATYPE_NORMALIZEDSTRING = 8480,
			DATATYPE_NOTATION = 8481,
			DATATYPE_POSITIVEINTEGER = 8482,
			DATATYPE_QNAME = 8483,
			DATATYPE_SHORT = 8484,
			DATATYPE_STRING = 8485,
			DATATYPE_TIME = 8486,
			DATATYPE_TOKEN = 8487,
			DATATYPE_UNSIGNEDBYTE = 8488,
			DATATYPE_UNSIGNEDINT = 8489,
			DATATYPE_UNSIGNEDLONG = 8490,
			DATATYPE_UNSIGNEDSHORT = 8491,
			DATATYPE_YEAR = 8492,
			DATATYPE_YEARMONTH = 8493,
			DATATYPE_ANYSIMPLETYPE = 8703,
			SIMPLETYPE = 8704,
			COMPLEXTYPE = 9216,
			PARTICLE = 16384,
			ANY = 16385,
			ANYATTRIBUTE = 16386,
			ELEMENT = 16387,
			GROUP = 16640,
			ALL = 16641,
			CHOICE = 16642,
			SEQUENCE = 16643,
			EMPTYPARTICLE = 16644,
			NULL = 2048,
			NULL_TYPE = 10240,
			NULL_ANY = 18433,
			NULL_ANYATTRIBUTE = 18434,
			NULL_ELEMENT = 18435,
		}
		public enum SCHEMAUSE : int32
		{
			OPTIONAL = 0,
			PROHIBITED = 1,
			REQUIRED = 2,
		}
		public enum SCHEMADERIVATIONMETHOD : int32
		{
			EMPTY = 0,
			SUBSTITUTION = 1,
			EXTENSION = 2,
			RESTRICTION = 4,
			LIST = 8,
			UNION = 16,
			ALL = 255,
			NONE = 256,
		}
		public enum SCHEMACONTENTTYPE : int32
		{
			EMPTY = 0,
			TEXTONLY = 1,
			ELEMENTONLY = 2,
			MIXED = 3,
		}
		public enum SCHEMAPROCESSCONTENTS : int32
		{
			NONE = 0,
			SKIP = 1,
			LAX = 2,
			STRICT = 3,
		}
		public enum SCHEMAWHITESPACE : int32
		{
			NONE = -1,
			PRESERVE = 0,
			REPLACE = 1,
			COLLAPSE = 2,
		}
		public enum SCHEMATYPEVARIETY : int32
		{
			NONE = -1,
			ATOMIC = 0,
			LIST = 1,
			UNION = 2,
		}
		public enum XHR_COOKIE_STATE : int32
		{
			UNKNOWN = 0,
			ACCEPT = 1,
			PROMPT = 2,
			LEASH = 3,
			DOWNGRADE = 4,
			REJECT = 5,
		}
		public enum XHR_COOKIE_FLAG : int32
		{
			IS_SECURE = 1,
			IS_SESSION = 2,
			THIRD_PARTY = 16,
			PROMPT_REQUIRED = 32,
			EVALUATE_P3P = 64,
			APPLY_P3P = 128,
			P3P_ENABLED = 256,
			IS_RESTRICTED = 512,
			IE6 = 1024,
			IS_LEGACY = 2048,
			NON_SCRIPT = 4096,
			HTTPONLY = 8192,
		}
		public enum XHR_CRED_PROMPT : int32
		{
			ALL = 0,
			NONE = 1,
			PROXY = 2,
		}
		public enum XHR_AUTH : int32
		{
			ALL = 0,
			NONE = 1,
			PROXY = 2,
		}
		public enum XHR_PROPERTY : int32
		{
			NO_CRED_PROMPT = 0,
			NO_AUTH = 1,
			TIMEOUT = 2,
			NO_DEFAULT_HEADERS = 3,
			REPORT_REDIRECT_STATUS = 4,
			NO_CACHE = 5,
			EXTENDED_ERROR = 6,
			QUERY_STRING_UTF8 = 7,
			IGNORE_CERT_ERRORS = 8,
			ONDATA_THRESHOLD = 9,
			SET_ENTERPRISEID = 10,
			MAX_CONNECTIONS = 11,
		}
		public enum XHR_CERT_IGNORE_FLAG : uint32
		{
			REVOCATION_FAILED = 128,
			UNKNOWN_CA = 256,
			CERT_CN_INVALID = 4096,
			CERT_DATE_INVALID = 8192,
			ALL_SERVER_ERRORS = 12672,
		}
		public enum XHR_CERT_ERROR_FLAG : uint32
		{
			REVOCATION_FAILED = 8388608,
			UNKNOWN_CA = 16777216,
			CERT_CN_INVALID = 33554432,
			CERT_DATE_INVALID = 67108864,
			ALL_SERVER_ERRORS = 125829120,
		}
		
		// --- Structs ---
		
		[CRepr]
		public struct XML_ERROR
		{
			public uint32 _nLine;
			public BSTR _pchBuf;
			public uint32 _cchBuf;
			public uint32 _ich;
			public BSTR _pszFound;
			public BSTR _pszExpected;
			public uint32 _reserved1;
			public uint32 _reserved2;
		}
		[CRepr]
		public struct __msxml6_ReferenceRemainingTypes__
		{
			public DOMNodeType __tagDomNodeType__;
			public DOMNodeType __domNodeType__;
			public SERVERXMLHTTP_OPTION __serverXmlHttpOptionEnum__;
			public SERVERXMLHTTP_OPTION __serverXmlHttpOption__;
			public SXH_SERVER_CERT_OPTION __serverCertOptionEnum__;
			public SXH_SERVER_CERT_OPTION __serverCertOption__;
			public SXH_PROXY_SETTING __proxySettingEnum__;
			public SXH_PROXY_SETTING __proxySetting__;
			public SOMITEMTYPE __somItemTypeEnum__;
			public SOMITEMTYPE __somItemType__;
			public SCHEMAUSE __schemaUseEnum__;
			public SCHEMAUSE __schemaUse__;
			public SCHEMADERIVATIONMETHOD __schemaDerivationMethodEnum__;
			public SCHEMADERIVATIONMETHOD __schemaDerivationMethod__;
			public SCHEMACONTENTTYPE __schemaContentTypeEnum__;
			public SCHEMACONTENTTYPE __schemaContentType__;
			public SCHEMAPROCESSCONTENTS __schemaProcessContentsEnum__;
			public SCHEMAPROCESSCONTENTS __schemaProcessContents__;
			public SCHEMAWHITESPACE __schemaWhitespaceEnum__;
			public SCHEMAWHITESPACE __schemaWhitespace__;
			public SCHEMATYPEVARIETY __schemaTypeVarietyEnum__;
			public SCHEMATYPEVARIETY __schemaTypeVariety__;
		}
		[CRepr]
		public struct XHR_COOKIE
		{
			public PWSTR pwszUrl;
			public PWSTR pwszName;
			public PWSTR pwszValue;
			public PWSTR pwszP3PPolicy;
			public FILETIME ftExpires;
			public uint32 dwFlags;
		}
		[CRepr]
		public struct XHR_CERT
		{
			public uint32 cbCert;
			public uint8* pbCert;
		}
		
		// --- COM Class IDs ---
		
		public const Guid CLSID_DOMDocument = .(0x2933bf90, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
		public const Guid CLSID_DOMFreeThreadedDocument = .(0x2933bf91, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
		public const Guid CLSID_XMLHTTPRequest = .(0xed8c108e, 0x4349, 0x11d2, 0x91, 0xa4, 0x00, 0xc0, 0x4f, 0x79, 0x69, 0xe8);
		public const Guid CLSID_XMLDSOControl = .(0x550dda30, 0x0541, 0x11d2, 0x9c, 0xa9, 0x00, 0x60, 0xb0, 0xec, 0x3d, 0x39);
		public const Guid CLSID_XMLDocument = .(0xcfc399af, 0xd876, 0x11d0, 0x9c, 0x10, 0x00, 0xc0, 0x4f, 0xc9, 0x9c, 0x8e);
		public const Guid CLSID_DOMDocument60 = .(0x88d96a05, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_FreeThreadedDOMDocument60 = .(0x88d96a06, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_XMLSchemaCache60 = .(0x88d96a07, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_XSLTemplate60 = .(0x88d96a08, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_XMLHTTP60 = .(0x88d96a0a, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_FreeThreadedXMLHTTP60 = .(0x88d96a09, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_ServerXMLHTTP60 = .(0x88d96a0b, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_SAXXMLReader60 = .(0x88d96a0c, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_MXXMLWriter60 = .(0x88d96a0f, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_MXHTMLWriter60 = .(0x88d96a10, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_SAXAttributes60 = .(0x88d96a0e, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		public const Guid CLSID_MXNamespaceManager60 = .(0x88d96a11, 0xf192, 0x11d4, 0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5);
		
		// --- COM Interfaces ---
		
		[CRepr]
		public struct IXMLDOMImplementation : IDispatch
		{
			public const new Guid IID = .(0x2933bf8f, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT hasFeature(BSTR feature, BSTR version, out int16 hasFeature) mut => VT.hasFeature(ref this, feature, version, out hasFeature);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMImplementation self, BSTR feature, BSTR version, out int16 hasFeature) hasFeature;
			}
		}
		[CRepr]
		public struct IXMLDOMNode : IDispatch
		{
			public const new Guid IID = .(0x2933bf80, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_nodeName(out BSTR name) mut => VT.get_nodeName(ref this, out name);
			public HRESULT get_nodeValue(out VARIANT value) mut => VT.get_nodeValue(ref this, out value);
			public HRESULT put_nodeValue(VARIANT value) mut => VT.put_nodeValue(ref this, value);
			public HRESULT get_nodeType(out DOMNodeType type) mut => VT.get_nodeType(ref this, out type);
			public HRESULT get_parentNode(out IXMLDOMNode* parent) mut => VT.get_parentNode(ref this, out parent);
			public HRESULT get_childNodes(out IXMLDOMNodeList* childList) mut => VT.get_childNodes(ref this, out childList);
			public HRESULT get_firstChild(out IXMLDOMNode* firstChild) mut => VT.get_firstChild(ref this, out firstChild);
			public HRESULT get_lastChild(out IXMLDOMNode* lastChild) mut => VT.get_lastChild(ref this, out lastChild);
			public HRESULT get_previousSibling(out IXMLDOMNode* previousSibling) mut => VT.get_previousSibling(ref this, out previousSibling);
			public HRESULT get_nextSibling(out IXMLDOMNode* nextSibling) mut => VT.get_nextSibling(ref this, out nextSibling);
			public HRESULT get_attributes(out IXMLDOMNamedNodeMap* attributeMap) mut => VT.get_attributes(ref this, out attributeMap);
			public HRESULT insertBefore(ref IXMLDOMNode newChild, VARIANT refChild, out IXMLDOMNode* outNewChild) mut => VT.insertBefore(ref this, ref newChild, refChild, out outNewChild);
			public HRESULT replaceChild(ref IXMLDOMNode newChild, ref IXMLDOMNode oldChild, out IXMLDOMNode* outOldChild) mut => VT.replaceChild(ref this, ref newChild, ref oldChild, out outOldChild);
			public HRESULT removeChild(ref IXMLDOMNode childNode, out IXMLDOMNode* oldChild) mut => VT.removeChild(ref this, ref childNode, out oldChild);
			public HRESULT appendChild(ref IXMLDOMNode newChild, out IXMLDOMNode* outNewChild) mut => VT.appendChild(ref this, ref newChild, out outNewChild);
			public HRESULT hasChildNodes(out int16 hasChild) mut => VT.hasChildNodes(ref this, out hasChild);
			public HRESULT get_ownerDocument(out IXMLDOMDocument* XMLDOMDocument) mut => VT.get_ownerDocument(ref this, out XMLDOMDocument);
			public HRESULT cloneNode(int16 deep, out IXMLDOMNode* cloneRoot) mut => VT.cloneNode(ref this, deep, out cloneRoot);
			public HRESULT get_nodeTypeString(out BSTR nodeType) mut => VT.get_nodeTypeString(ref this, out nodeType);
			public HRESULT get_text(out BSTR text) mut => VT.get_text(ref this, out text);
			public HRESULT put_text(BSTR text) mut => VT.put_text(ref this, text);
			public HRESULT get_specified(out int16 isSpecified) mut => VT.get_specified(ref this, out isSpecified);
			public HRESULT get_definition(out IXMLDOMNode* definitionNode) mut => VT.get_definition(ref this, out definitionNode);
			public HRESULT get_nodeTypedValue(out VARIANT typedValue) mut => VT.get_nodeTypedValue(ref this, out typedValue);
			public HRESULT put_nodeTypedValue(VARIANT typedValue) mut => VT.put_nodeTypedValue(ref this, typedValue);
			public HRESULT get_dataType(out VARIANT dataTypeName) mut => VT.get_dataType(ref this, out dataTypeName);
			public HRESULT put_dataType(BSTR dataTypeName) mut => VT.put_dataType(ref this, dataTypeName);
			public HRESULT get_xml(out BSTR xmlString) mut => VT.get_xml(ref this, out xmlString);
			public HRESULT transformNode(ref IXMLDOMNode stylesheet, out BSTR xmlString) mut => VT.transformNode(ref this, ref stylesheet, out xmlString);
			public HRESULT selectNodes(BSTR queryString, out IXMLDOMNodeList* resultList) mut => VT.selectNodes(ref this, queryString, out resultList);
			public HRESULT selectSingleNode(BSTR queryString, out IXMLDOMNode* resultNode) mut => VT.selectSingleNode(ref this, queryString, out resultNode);
			public HRESULT get_parsed(out int16 isParsed) mut => VT.get_parsed(ref this, out isParsed);
			public HRESULT get_namespaceURI(out BSTR namespaceURI) mut => VT.get_namespaceURI(ref this, out namespaceURI);
			public HRESULT get_prefix(out BSTR prefixString) mut => VT.get_prefix(ref this, out prefixString);
			public HRESULT get_baseName(out BSTR nameString) mut => VT.get_baseName(ref this, out nameString);
			public HRESULT transformNodeToObject(ref IXMLDOMNode stylesheet, VARIANT outputObject) mut => VT.transformNodeToObject(ref this, ref stylesheet, outputObject);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR name) get_nodeName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out VARIANT value) get_nodeValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, VARIANT value) put_nodeValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out DOMNodeType type) get_nodeType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* parent) get_parentNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNodeList* childList) get_childNodes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* firstChild) get_firstChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* lastChild) get_lastChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* previousSibling) get_previousSibling;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* nextSibling) get_nextSibling;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNamedNodeMap* attributeMap) get_attributes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode newChild, VARIANT refChild, out IXMLDOMNode* outNewChild) insertBefore;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode newChild, ref IXMLDOMNode oldChild, out IXMLDOMNode* outOldChild) replaceChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode childNode, out IXMLDOMNode* oldChild) removeChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode newChild, out IXMLDOMNode* outNewChild) appendChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out int16 hasChild) hasChildNodes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMDocument* XMLDOMDocument) get_ownerDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, int16 deep, out IXMLDOMNode* cloneRoot) cloneNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR nodeType) get_nodeTypeString;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR text) get_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, BSTR text) put_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out int16 isSpecified) get_specified;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out IXMLDOMNode* definitionNode) get_definition;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out VARIANT typedValue) get_nodeTypedValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, VARIANT typedValue) put_nodeTypedValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out VARIANT dataTypeName) get_dataType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, BSTR dataTypeName) put_dataType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR xmlString) get_xml;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode stylesheet, out BSTR xmlString) transformNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, BSTR queryString, out IXMLDOMNodeList* resultList) selectNodes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, BSTR queryString, out IXMLDOMNode* resultNode) selectSingleNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out int16 isParsed) get_parsed;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR namespaceURI) get_namespaceURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR prefixString) get_prefix;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, out BSTR nameString) get_baseName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNode self, ref IXMLDOMNode stylesheet, VARIANT outputObject) transformNodeToObject;
			}
		}
		[CRepr]
		public struct IXMLDOMDocumentFragment : IXMLDOMNode
		{
			public const new Guid IID = .(0x3efaa413, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			[CRepr]
			public struct VTable : IXMLDOMNode.VTable {}
		}
		[CRepr]
		public struct IXMLDOMDocument : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf81, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_doctype(out IXMLDOMDocumentType* documentType) mut => VT.get_doctype(ref this, out documentType);
			public HRESULT get_implementation(out IXMLDOMImplementation* impl) mut => VT.get_implementation(ref this, out impl);
			public HRESULT get_documentElement(out IXMLDOMElement* DOMElement) mut => VT.get_documentElement(ref this, out DOMElement);
			public HRESULT putref_documentElement(ref IXMLDOMElement DOMElement) mut => VT.putref_documentElement(ref this, ref DOMElement);
			public HRESULT createElement(BSTR tagName, out IXMLDOMElement* element) mut => VT.createElement(ref this, tagName, out element);
			public HRESULT createDocumentFragment(out IXMLDOMDocumentFragment* docFrag) mut => VT.createDocumentFragment(ref this, out docFrag);
			public HRESULT createTextNode(BSTR data, out IXMLDOMText* text) mut => VT.createTextNode(ref this, data, out text);
			public HRESULT createComment(BSTR data, out IXMLDOMComment* comment) mut => VT.createComment(ref this, data, out comment);
			public HRESULT createCDATASection(BSTR data, out IXMLDOMCDATASection* cdata) mut => VT.createCDATASection(ref this, data, out cdata);
			public HRESULT createProcessingInstruction(BSTR target, BSTR data, out IXMLDOMProcessingInstruction* pi) mut => VT.createProcessingInstruction(ref this, target, data, out pi);
			public HRESULT createAttribute(BSTR name, out IXMLDOMAttribute* attribute) mut => VT.createAttribute(ref this, name, out attribute);
			public HRESULT createEntityReference(BSTR name, out IXMLDOMEntityReference* entityRef) mut => VT.createEntityReference(ref this, name, out entityRef);
			public HRESULT getElementsByTagName(BSTR tagName, out IXMLDOMNodeList* resultList) mut => VT.getElementsByTagName(ref this, tagName, out resultList);
			public HRESULT createNode(VARIANT Type, BSTR name, BSTR namespaceURI, out IXMLDOMNode* node) mut => VT.createNode(ref this, Type, name, namespaceURI, out node);
			public HRESULT nodeFromID(BSTR idString, out IXMLDOMNode* node) mut => VT.nodeFromID(ref this, idString, out node);
			public HRESULT load(VARIANT xmlSource, out int16 isSuccessful) mut => VT.load(ref this, xmlSource, out isSuccessful);
			public HRESULT get_readyState(out int32 value) mut => VT.get_readyState(ref this, out value);
			public HRESULT get_parseError(out IXMLDOMParseError* errorObj) mut => VT.get_parseError(ref this, out errorObj);
			public HRESULT get_url(out BSTR urlString) mut => VT.get_url(ref this, out urlString);
			public HRESULT get_async(out int16 isAsync) mut => VT.get_async(ref this, out isAsync);
			public HRESULT put_async(int16 isAsync) mut => VT.put_async(ref this, isAsync);
			public HRESULT abort() mut => VT.abort(ref this);
			public HRESULT loadXML(BSTR bstrXML, out int16 isSuccessful) mut => VT.loadXML(ref this, bstrXML, out isSuccessful);
			public HRESULT save(VARIANT destination) mut => VT.save(ref this, destination);
			public HRESULT get_validateOnParse(out int16 isValidating) mut => VT.get_validateOnParse(ref this, out isValidating);
			public HRESULT put_validateOnParse(int16 isValidating) mut => VT.put_validateOnParse(ref this, isValidating);
			public HRESULT get_resolveExternals(out int16 isResolving) mut => VT.get_resolveExternals(ref this, out isResolving);
			public HRESULT put_resolveExternals(int16 isResolving) mut => VT.put_resolveExternals(ref this, isResolving);
			public HRESULT get_preserveWhiteSpace(out int16 isPreserving) mut => VT.get_preserveWhiteSpace(ref this, out isPreserving);
			public HRESULT put_preserveWhiteSpace(int16 isPreserving) mut => VT.put_preserveWhiteSpace(ref this, isPreserving);
			public HRESULT put_onreadystatechange(VARIANT readystatechangeSink) mut => VT.put_onreadystatechange(ref this, readystatechangeSink);
			public HRESULT put_ondataavailable(VARIANT ondataavailableSink) mut => VT.put_ondataavailable(ref this, ondataavailableSink);
			public HRESULT put_ontransformnode(VARIANT ontransformnodeSink) mut => VT.put_ontransformnode(ref this, ontransformnodeSink);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out IXMLDOMDocumentType* documentType) get_doctype;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out IXMLDOMImplementation* impl) get_implementation;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out IXMLDOMElement* DOMElement) get_documentElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, ref IXMLDOMElement DOMElement) putref_documentElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR tagName, out IXMLDOMElement* element) createElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out IXMLDOMDocumentFragment* docFrag) createDocumentFragment;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR data, out IXMLDOMText* text) createTextNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR data, out IXMLDOMComment* comment) createComment;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR data, out IXMLDOMCDATASection* cdata) createCDATASection;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR target, BSTR data, out IXMLDOMProcessingInstruction* pi) createProcessingInstruction;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR name, out IXMLDOMAttribute* attribute) createAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR name, out IXMLDOMEntityReference* entityRef) createEntityReference;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR tagName, out IXMLDOMNodeList* resultList) getElementsByTagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT Type, BSTR name, BSTR namespaceURI, out IXMLDOMNode* node) createNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR idString, out IXMLDOMNode* node) nodeFromID;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT xmlSource, out int16 isSuccessful) load;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out int32 value) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out IXMLDOMParseError* errorObj) get_parseError;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out BSTR urlString) get_url;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out int16 isAsync) get_async;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, int16 isAsync) put_async;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self) abort;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, BSTR bstrXML, out int16 isSuccessful) loadXML;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT destination) save;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out int16 isValidating) get_validateOnParse;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, int16 isValidating) put_validateOnParse;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out int16 isResolving) get_resolveExternals;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, int16 isResolving) put_resolveExternals;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, out int16 isPreserving) get_preserveWhiteSpace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, int16 isPreserving) put_preserveWhiteSpace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT readystatechangeSink) put_onreadystatechange;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT ondataavailableSink) put_ondataavailable;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument self, VARIANT ontransformnodeSink) put_ontransformnode;
			}
		}
		[CRepr]
		public struct IXMLDOMNodeList : IDispatch
		{
			public const new Guid IID = .(0x2933bf82, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_item(int32 index, out IXMLDOMNode* listItem) mut => VT.get_item(ref this, index, out listItem);
			public HRESULT get_length(out int32 listLength) mut => VT.get_length(ref this, out listLength);
			public HRESULT nextNode(out IXMLDOMNode* nextItem) mut => VT.nextNode(ref this, out nextItem);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT get__newEnum(out IUnknown* ppUnk) mut => VT.get__newEnum(ref this, out ppUnk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNodeList self, int32 index, out IXMLDOMNode* listItem) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNodeList self, out int32 listLength) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNodeList self, out IXMLDOMNode* nextItem) nextNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNodeList self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNodeList self, out IUnknown* ppUnk) get__newEnum;
			}
		}
		[CRepr]
		public struct IXMLDOMNamedNodeMap : IDispatch
		{
			public const new Guid IID = .(0x2933bf83, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getNamedItem(BSTR name, out IXMLDOMNode* namedItem) mut => VT.getNamedItem(ref this, name, out namedItem);
			public HRESULT setNamedItem(ref IXMLDOMNode newItem, out IXMLDOMNode* nameItem) mut => VT.setNamedItem(ref this, ref newItem, out nameItem);
			public HRESULT removeNamedItem(BSTR name, out IXMLDOMNode* namedItem) mut => VT.removeNamedItem(ref this, name, out namedItem);
			public HRESULT get_item(int32 index, out IXMLDOMNode* listItem) mut => VT.get_item(ref this, index, out listItem);
			public HRESULT get_length(out int32 listLength) mut => VT.get_length(ref this, out listLength);
			public HRESULT getQualifiedItem(BSTR baseName, BSTR namespaceURI, out IXMLDOMNode* qualifiedItem) mut => VT.getQualifiedItem(ref this, baseName, namespaceURI, out qualifiedItem);
			public HRESULT removeQualifiedItem(BSTR baseName, BSTR namespaceURI, out IXMLDOMNode* qualifiedItem) mut => VT.removeQualifiedItem(ref this, baseName, namespaceURI, out qualifiedItem);
			public HRESULT nextNode(out IXMLDOMNode* nextItem) mut => VT.nextNode(ref this, out nextItem);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT get__newEnum(out IUnknown* ppUnk) mut => VT.get__newEnum(ref this, out ppUnk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, BSTR name, out IXMLDOMNode* namedItem) getNamedItem;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, ref IXMLDOMNode newItem, out IXMLDOMNode* nameItem) setNamedItem;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, BSTR name, out IXMLDOMNode* namedItem) removeNamedItem;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, int32 index, out IXMLDOMNode* listItem) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, out int32 listLength) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, BSTR baseName, BSTR namespaceURI, out IXMLDOMNode* qualifiedItem) getQualifiedItem;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, BSTR baseName, BSTR namespaceURI, out IXMLDOMNode* qualifiedItem) removeQualifiedItem;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, out IXMLDOMNode* nextItem) nextNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNamedNodeMap self, out IUnknown* ppUnk) get__newEnum;
			}
		}
		[CRepr]
		public struct IXMLDOMCharacterData : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf84, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_data(out BSTR data) mut => VT.get_data(ref this, out data);
			public HRESULT put_data(BSTR data) mut => VT.put_data(ref this, data);
			public HRESULT get_length(out int32 dataLength) mut => VT.get_length(ref this, out dataLength);
			public HRESULT substringData(int32 offset, int32 count, out BSTR data) mut => VT.substringData(ref this, offset, count, out data);
			public HRESULT appendData(BSTR data) mut => VT.appendData(ref this, data);
			public HRESULT insertData(int32 offset, BSTR data) mut => VT.insertData(ref this, offset, data);
			public HRESULT deleteData(int32 offset, int32 count) mut => VT.deleteData(ref this, offset, count);
			public HRESULT replaceData(int32 offset, int32 count, BSTR data) mut => VT.replaceData(ref this, offset, count, data);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, out BSTR data) get_data;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, BSTR data) put_data;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, out int32 dataLength) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, int32 offset, int32 count, out BSTR data) substringData;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, BSTR data) appendData;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, int32 offset, BSTR data) insertData;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, int32 offset, int32 count) deleteData;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMCharacterData self, int32 offset, int32 count, BSTR data) replaceData;
			}
		}
		[CRepr]
		public struct IXMLDOMAttribute : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf85, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_name(out BSTR attributeName) mut => VT.get_name(ref this, out attributeName);
			public HRESULT get_value(out VARIANT attributeValue) mut => VT.get_value(ref this, out attributeValue);
			public HRESULT put_value(VARIANT attributeValue) mut => VT.put_value(ref this, attributeValue);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMAttribute self, out BSTR attributeName) get_name;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMAttribute self, out VARIANT attributeValue) get_value;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMAttribute self, VARIANT attributeValue) put_value;
			}
		}
		[CRepr]
		public struct IXMLDOMElement : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf86, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_tagName(out BSTR tagName) mut => VT.get_tagName(ref this, out tagName);
			public HRESULT getAttribute(BSTR name, out VARIANT value) mut => VT.getAttribute(ref this, name, out value);
			public HRESULT setAttribute(BSTR name, VARIANT value) mut => VT.setAttribute(ref this, name, value);
			public HRESULT removeAttribute(BSTR name) mut => VT.removeAttribute(ref this, name);
			public HRESULT getAttributeNode(BSTR name, out IXMLDOMAttribute* attributeNode) mut => VT.getAttributeNode(ref this, name, out attributeNode);
			public HRESULT setAttributeNode(ref IXMLDOMAttribute DOMAttribute, out IXMLDOMAttribute* attributeNode) mut => VT.setAttributeNode(ref this, ref DOMAttribute, out attributeNode);
			public HRESULT removeAttributeNode(ref IXMLDOMAttribute DOMAttribute, out IXMLDOMAttribute* attributeNode) mut => VT.removeAttributeNode(ref this, ref DOMAttribute, out attributeNode);
			public HRESULT getElementsByTagName(BSTR tagName, out IXMLDOMNodeList* resultList) mut => VT.getElementsByTagName(ref this, tagName, out resultList);
			public HRESULT normalize() mut => VT.normalize(ref this);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, out BSTR tagName) get_tagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, BSTR name, out VARIANT value) getAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, BSTR name, VARIANT value) setAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, BSTR name) removeAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, BSTR name, out IXMLDOMAttribute* attributeNode) getAttributeNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, ref IXMLDOMAttribute DOMAttribute, out IXMLDOMAttribute* attributeNode) setAttributeNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, ref IXMLDOMAttribute DOMAttribute, out IXMLDOMAttribute* attributeNode) removeAttributeNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self, BSTR tagName, out IXMLDOMNodeList* resultList) getElementsByTagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMElement self) normalize;
			}
		}
		[CRepr]
		public struct IXMLDOMText : IXMLDOMCharacterData
		{
			public const new Guid IID = .(0x2933bf87, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT splitText(int32 offset, out IXMLDOMText* rightHandTextNode) mut => VT.splitText(ref this, offset, out rightHandTextNode);

			[CRepr]
			public struct VTable : IXMLDOMCharacterData.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMText self, int32 offset, out IXMLDOMText* rightHandTextNode) splitText;
			}
		}
		[CRepr]
		public struct IXMLDOMComment : IXMLDOMCharacterData
		{
			public const new Guid IID = .(0x2933bf88, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			[CRepr]
			public struct VTable : IXMLDOMCharacterData.VTable {}
		}
		[CRepr]
		public struct IXMLDOMProcessingInstruction : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf89, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_target(out BSTR name) mut => VT.get_target(ref this, out name);
			public HRESULT get_data(out BSTR value) mut => VT.get_data(ref this, out value);
			public HRESULT put_data(BSTR value) mut => VT.put_data(ref this, value);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMProcessingInstruction self, out BSTR name) get_target;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMProcessingInstruction self, out BSTR value) get_data;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMProcessingInstruction self, BSTR value) put_data;
			}
		}
		[CRepr]
		public struct IXMLDOMCDATASection : IXMLDOMText
		{
			public const new Guid IID = .(0x2933bf8a, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			[CRepr]
			public struct VTable : IXMLDOMText.VTable {}
		}
		[CRepr]
		public struct IXMLDOMDocumentType : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf8b, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_name(out BSTR rootName) mut => VT.get_name(ref this, out rootName);
			public HRESULT get_entities(out IXMLDOMNamedNodeMap* entityMap) mut => VT.get_entities(ref this, out entityMap);
			public HRESULT get_notations(out IXMLDOMNamedNodeMap* notationMap) mut => VT.get_notations(ref this, out notationMap);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocumentType self, out BSTR rootName) get_name;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocumentType self, out IXMLDOMNamedNodeMap* entityMap) get_entities;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocumentType self, out IXMLDOMNamedNodeMap* notationMap) get_notations;
			}
		}
		[CRepr]
		public struct IXMLDOMNotation : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf8c, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_publicId(out VARIANT publicID) mut => VT.get_publicId(ref this, out publicID);
			public HRESULT get_systemId(out VARIANT systemID) mut => VT.get_systemId(ref this, out systemID);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNotation self, out VARIANT publicID) get_publicId;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMNotation self, out VARIANT systemID) get_systemId;
			}
		}
		[CRepr]
		public struct IXMLDOMEntity : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf8d, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_publicId(out VARIANT publicID) mut => VT.get_publicId(ref this, out publicID);
			public HRESULT get_systemId(out VARIANT systemID) mut => VT.get_systemId(ref this, out systemID);
			public HRESULT get_notationName(out BSTR name) mut => VT.get_notationName(ref this, out name);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMEntity self, out VARIANT publicID) get_publicId;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMEntity self, out VARIANT systemID) get_systemId;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMEntity self, out BSTR name) get_notationName;
			}
		}
		[CRepr]
		public struct IXMLDOMEntityReference : IXMLDOMNode
		{
			public const new Guid IID = .(0x2933bf8e, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			[CRepr]
			public struct VTable : IXMLDOMNode.VTable {}
		}
		[CRepr]
		public struct IXMLDOMParseError : IDispatch
		{
			public const new Guid IID = .(0x3efaa426, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_errorCode(out int32 errorCode) mut => VT.get_errorCode(ref this, out errorCode);
			public HRESULT get_url(out BSTR urlString) mut => VT.get_url(ref this, out urlString);
			public HRESULT get_reason(out BSTR reasonString) mut => VT.get_reason(ref this, out reasonString);
			public HRESULT get_srcText(out BSTR sourceString) mut => VT.get_srcText(ref this, out sourceString);
			public HRESULT get_line(out int32 lineNumber) mut => VT.get_line(ref this, out lineNumber);
			public HRESULT get_linepos(out int32 linePosition) mut => VT.get_linepos(ref this, out linePosition);
			public HRESULT get_filepos(out int32 filePosition) mut => VT.get_filepos(ref this, out filePosition);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out int32 errorCode) get_errorCode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out BSTR urlString) get_url;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out BSTR reasonString) get_reason;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out BSTR sourceString) get_srcText;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out int32 lineNumber) get_line;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out int32 linePosition) get_linepos;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError self, out int32 filePosition) get_filepos;
			}
		}
		[CRepr]
		public struct IXTLRuntime : IXMLDOMNode
		{
			public const new Guid IID = .(0x3efaa425, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT uniqueID(ref IXMLDOMNode pNode, out int32 pID) mut => VT.uniqueID(ref this, ref pNode, out pID);
			public HRESULT depth(ref IXMLDOMNode pNode, out int32 pDepth) mut => VT.depth(ref this, ref pNode, out pDepth);
			public HRESULT childNumber(ref IXMLDOMNode pNode, out int32 pNumber) mut => VT.childNumber(ref this, ref pNode, out pNumber);
			public HRESULT ancestorChildNumber(BSTR bstrNodeName, ref IXMLDOMNode pNode, out int32 pNumber) mut => VT.ancestorChildNumber(ref this, bstrNodeName, ref pNode, out pNumber);
			public HRESULT absoluteChildNumber(ref IXMLDOMNode pNode, out int32 pNumber) mut => VT.absoluteChildNumber(ref this, ref pNode, out pNumber);
			public HRESULT formatIndex(int32 lIndex, BSTR bstrFormat, out BSTR pbstrFormattedString) mut => VT.formatIndex(ref this, lIndex, bstrFormat, out pbstrFormattedString);
			public HRESULT formatNumber(double dblNumber, BSTR bstrFormat, out BSTR pbstrFormattedString) mut => VT.formatNumber(ref this, dblNumber, bstrFormat, out pbstrFormattedString);
			public HRESULT formatDate(VARIANT varDate, BSTR bstrFormat, VARIANT varDestLocale, out BSTR pbstrFormattedString) mut => VT.formatDate(ref this, varDate, bstrFormat, varDestLocale, out pbstrFormattedString);
			public HRESULT formatTime(VARIANT varTime, BSTR bstrFormat, VARIANT varDestLocale, out BSTR pbstrFormattedString) mut => VT.formatTime(ref this, varTime, bstrFormat, varDestLocale, out pbstrFormattedString);

			[CRepr]
			public struct VTable : IXMLDOMNode.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, ref IXMLDOMNode pNode, out int32 pID) uniqueID;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, ref IXMLDOMNode pNode, out int32 pDepth) depth;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, ref IXMLDOMNode pNode, out int32 pNumber) childNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, BSTR bstrNodeName, ref IXMLDOMNode pNode, out int32 pNumber) ancestorChildNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, ref IXMLDOMNode pNode, out int32 pNumber) absoluteChildNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, int32 lIndex, BSTR bstrFormat, out BSTR pbstrFormattedString) formatIndex;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, double dblNumber, BSTR bstrFormat, out BSTR pbstrFormattedString) formatNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, VARIANT varDate, BSTR bstrFormat, VARIANT varDestLocale, out BSTR pbstrFormattedString) formatDate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXTLRuntime self, VARIANT varTime, BSTR bstrFormat, VARIANT varDestLocale, out BSTR pbstrFormattedString) formatTime;
			}
		}
		[CRepr]
		public struct XMLDOMDocumentEvents : IDispatch
		{
			public const new Guid IID = .(0x3efaa427, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			[CRepr]
			public struct VTable : IDispatch.VTable {}
		}
		[CRepr]
		public struct IXMLHttpRequest : IDispatch
		{
			public const new Guid IID = .(0xed8c108d, 0x4349, 0x11d2, 0x91, 0xa4, 0x00, 0xc0, 0x4f, 0x79, 0x69, 0xe8);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT open(BSTR bstrMethod, BSTR bstrUrl, VARIANT varAsync, VARIANT bstrUser, VARIANT bstrPassword) mut => VT.open(ref this, bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
			public HRESULT setRequestHeader(BSTR bstrHeader, BSTR bstrValue) mut => VT.setRequestHeader(ref this, bstrHeader, bstrValue);
			public HRESULT getResponseHeader(BSTR bstrHeader, BSTR* pbstrValue) mut => VT.getResponseHeader(ref this, bstrHeader, pbstrValue);
			public HRESULT getAllResponseHeaders(BSTR* pbstrHeaders) mut => VT.getAllResponseHeaders(ref this, pbstrHeaders);
			public HRESULT send(VARIANT varBody) mut => VT.send(ref this, varBody);
			public HRESULT abort() mut => VT.abort(ref this);
			public HRESULT get_status(out int32 plStatus) mut => VT.get_status(ref this, out plStatus);
			public HRESULT get_statusText(BSTR* pbstrStatus) mut => VT.get_statusText(ref this, pbstrStatus);
			public HRESULT get_responseXML(IDispatch** ppBody) mut => VT.get_responseXML(ref this, ppBody);
			public HRESULT get_responseText(BSTR* pbstrBody) mut => VT.get_responseText(ref this, pbstrBody);
			public HRESULT get_responseBody(out VARIANT pvarBody) mut => VT.get_responseBody(ref this, out pvarBody);
			public HRESULT get_responseStream(out VARIANT pvarBody) mut => VT.get_responseStream(ref this, out pvarBody);
			public HRESULT get_readyState(out int32 plState) mut => VT.get_readyState(ref this, out plState);
			public HRESULT put_onreadystatechange(IDispatch* pReadyStateSink) mut => VT.put_onreadystatechange(ref this, pReadyStateSink);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR bstrMethod, BSTR bstrUrl, VARIANT varAsync, VARIANT bstrUser, VARIANT bstrPassword) open;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR bstrHeader, BSTR bstrValue) setRequestHeader;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR bstrHeader, BSTR* pbstrValue) getResponseHeader;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR* pbstrHeaders) getAllResponseHeaders;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, VARIANT varBody) send;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self) abort;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, out int32 plStatus) get_status;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR* pbstrStatus) get_statusText;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, IDispatch** ppBody) get_responseXML;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, BSTR* pbstrBody) get_responseText;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, out VARIANT pvarBody) get_responseBody;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, out VARIANT pvarBody) get_responseStream;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, out int32 plState) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHttpRequest self, IDispatch* pReadyStateSink) put_onreadystatechange;
			}
		}
		[CRepr]
		public struct IXMLDSOControl : IDispatch
		{
			public const new Guid IID = .(0x310afa62, 0x0575, 0x11d2, 0x9c, 0xa9, 0x00, 0x60, 0xb0, 0xec, 0x3d, 0x39);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_XMLDocument(out IXMLDOMDocument* ppDoc) mut => VT.get_XMLDocument(ref this, out ppDoc);
			public HRESULT put_XMLDocument(ref IXMLDOMDocument ppDoc) mut => VT.put_XMLDocument(ref this, ref ppDoc);
			public HRESULT get_JavaDSOCompatible(out BOOL fJavaDSOCompatible) mut => VT.get_JavaDSOCompatible(ref this, out fJavaDSOCompatible);
			public HRESULT put_JavaDSOCompatible(BOOL fJavaDSOCompatible) mut => VT.put_JavaDSOCompatible(ref this, fJavaDSOCompatible);
			public HRESULT get_readyState(out int32 state) mut => VT.get_readyState(ref this, out state);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDSOControl self, out IXMLDOMDocument* ppDoc) get_XMLDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDSOControl self, ref IXMLDOMDocument ppDoc) put_XMLDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDSOControl self, out BOOL fJavaDSOCompatible) get_JavaDSOCompatible;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDSOControl self, BOOL fJavaDSOCompatible) put_JavaDSOCompatible;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDSOControl self, out int32 state) get_readyState;
			}
		}
		[CRepr]
		public struct IXMLElementCollection : IDispatch
		{
			public const new Guid IID = .(0x65725580, 0x9b5d, 0x11d0, 0x9b, 0xfe, 0x00, 0xc0, 0x4f, 0xc9, 0x9c, 0x8e);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT put_length(int32 v) mut => VT.put_length(ref this, v);
			public HRESULT get_length(out int32 p) mut => VT.get_length(ref this, out p);
			public HRESULT get__newEnum(out IUnknown* ppUnk) mut => VT.get__newEnum(ref this, out ppUnk);
			public HRESULT item(VARIANT var1, VARIANT var2, out IDispatch* ppDisp) mut => VT.item(ref this, var1, var2, out ppDisp);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElementCollection self, int32 v) put_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElementCollection self, out int32 p) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElementCollection self, out IUnknown* ppUnk) get__newEnum;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElementCollection self, VARIANT var1, VARIANT var2, out IDispatch* ppDisp) item;
			}
		}
		[CRepr]
		public struct IXMLDocument : IDispatch
		{
			public const new Guid IID = .(0xf52e2b61, 0x18a1, 0x11d1, 0xb1, 0x05, 0x00, 0x80, 0x5f, 0x49, 0x91, 0x6b);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_root(out IXMLElement* p) mut => VT.get_root(ref this, out p);
			public HRESULT get_fileSize(out BSTR p) mut => VT.get_fileSize(ref this, out p);
			public HRESULT get_fileModifiedDate(out BSTR p) mut => VT.get_fileModifiedDate(ref this, out p);
			public HRESULT get_fileUpdatedDate(out BSTR p) mut => VT.get_fileUpdatedDate(ref this, out p);
			public HRESULT get_URL(out BSTR p) mut => VT.get_URL(ref this, out p);
			public HRESULT put_URL(BSTR p) mut => VT.put_URL(ref this, p);
			public HRESULT get_mimeType(out BSTR p) mut => VT.get_mimeType(ref this, out p);
			public HRESULT get_readyState(out int32 pl) mut => VT.get_readyState(ref this, out pl);
			public HRESULT get_charset(out BSTR p) mut => VT.get_charset(ref this, out p);
			public HRESULT put_charset(BSTR p) mut => VT.put_charset(ref this, p);
			public HRESULT get_version(out BSTR p) mut => VT.get_version(ref this, out p);
			public HRESULT get_doctype(out BSTR p) mut => VT.get_doctype(ref this, out p);
			public HRESULT get_dtdURL(out BSTR p) mut => VT.get_dtdURL(ref this, out p);
			public HRESULT createElement(VARIANT vType, VARIANT var1, out IXMLElement* ppElem) mut => VT.createElement(ref this, vType, var1, out ppElem);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out IXMLElement* p) get_root;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_fileSize;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_fileModifiedDate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_fileUpdatedDate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_URL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, BSTR p) put_URL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_mimeType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out int32 pl) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_charset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, BSTR p) put_charset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_version;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_doctype;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, out BSTR p) get_dtdURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument self, VARIANT vType, VARIANT var1, out IXMLElement* ppElem) createElement;
			}
		}
		[CRepr]
		public struct IXMLDocument2 : IDispatch
		{
			public const new Guid IID = .(0x2b8de2fe, 0x8d2d, 0x11d1, 0xb2, 0xfc, 0x00, 0xc0, 0x4f, 0xd9, 0x15, 0xa9);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_root(out IXMLElement2* p) mut => VT.get_root(ref this, out p);
			public HRESULT get_fileSize(out BSTR p) mut => VT.get_fileSize(ref this, out p);
			public HRESULT get_fileModifiedDate(out BSTR p) mut => VT.get_fileModifiedDate(ref this, out p);
			public HRESULT get_fileUpdatedDate(out BSTR p) mut => VT.get_fileUpdatedDate(ref this, out p);
			public HRESULT get_URL(out BSTR p) mut => VT.get_URL(ref this, out p);
			public HRESULT put_URL(BSTR p) mut => VT.put_URL(ref this, p);
			public HRESULT get_mimeType(out BSTR p) mut => VT.get_mimeType(ref this, out p);
			public HRESULT get_readyState(out int32 pl) mut => VT.get_readyState(ref this, out pl);
			public HRESULT get_charset(out BSTR p) mut => VT.get_charset(ref this, out p);
			public HRESULT put_charset(BSTR p) mut => VT.put_charset(ref this, p);
			public HRESULT get_version(out BSTR p) mut => VT.get_version(ref this, out p);
			public HRESULT get_doctype(out BSTR p) mut => VT.get_doctype(ref this, out p);
			public HRESULT get_dtdURL(out BSTR p) mut => VT.get_dtdURL(ref this, out p);
			public HRESULT createElement(VARIANT vType, VARIANT var1, out IXMLElement2* ppElem) mut => VT.createElement(ref this, vType, var1, out ppElem);
			public HRESULT get_async(out int16 pf) mut => VT.get_async(ref this, out pf);
			public HRESULT put_async(int16 f) mut => VT.put_async(ref this, f);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out IXMLElement2* p) get_root;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_fileSize;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_fileModifiedDate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_fileUpdatedDate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_URL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, BSTR p) put_URL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_mimeType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out int32 pl) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_charset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, BSTR p) put_charset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_version;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_doctype;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out BSTR p) get_dtdURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, VARIANT vType, VARIANT var1, out IXMLElement2* ppElem) createElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, out int16 pf) get_async;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDocument2 self, int16 f) put_async;
			}
		}
		[CRepr]
		public struct IXMLElement : IDispatch
		{
			public const new Guid IID = .(0x3f7f31ac, 0xe15f, 0x11d0, 0x9c, 0x25, 0x00, 0xc0, 0x4f, 0xc9, 0x9c, 0x8e);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_tagName(out BSTR p) mut => VT.get_tagName(ref this, out p);
			public HRESULT put_tagName(BSTR p) mut => VT.put_tagName(ref this, p);
			public HRESULT get_parent(out IXMLElement* ppParent) mut => VT.get_parent(ref this, out ppParent);
			public HRESULT setAttribute(BSTR strPropertyName, VARIANT PropertyValue) mut => VT.setAttribute(ref this, strPropertyName, PropertyValue);
			public HRESULT getAttribute(BSTR strPropertyName, out VARIANT PropertyValue) mut => VT.getAttribute(ref this, strPropertyName, out PropertyValue);
			public HRESULT removeAttribute(BSTR strPropertyName) mut => VT.removeAttribute(ref this, strPropertyName);
			public HRESULT get_children(out IXMLElementCollection* pp) mut => VT.get_children(ref this, out pp);
			public HRESULT get_type(out int32 plType) mut => VT.get_type(ref this, out plType);
			public HRESULT get_text(out BSTR p) mut => VT.get_text(ref this, out p);
			public HRESULT put_text(BSTR p) mut => VT.put_text(ref this, p);
			public HRESULT addChild(ref IXMLElement pChildElem, int32 lIndex, int32 lReserved) mut => VT.addChild(ref this, ref pChildElem, lIndex, lReserved);
			public HRESULT removeChild(ref IXMLElement pChildElem) mut => VT.removeChild(ref this, ref pChildElem);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, out BSTR p) get_tagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, BSTR p) put_tagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, out IXMLElement* ppParent) get_parent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, BSTR strPropertyName, VARIANT PropertyValue) setAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, BSTR strPropertyName, out VARIANT PropertyValue) getAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, BSTR strPropertyName) removeAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, out IXMLElementCollection* pp) get_children;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, out int32 plType) get_type;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, out BSTR p) get_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, BSTR p) put_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, ref IXMLElement pChildElem, int32 lIndex, int32 lReserved) addChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement self, ref IXMLElement pChildElem) removeChild;
			}
		}
		[CRepr]
		public struct IXMLElement2 : IDispatch
		{
			public const new Guid IID = .(0x2b8de2ff, 0x8d2d, 0x11d1, 0xb2, 0xfc, 0x00, 0xc0, 0x4f, 0xd9, 0x15, 0xa9);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_tagName(out BSTR p) mut => VT.get_tagName(ref this, out p);
			public HRESULT put_tagName(BSTR p) mut => VT.put_tagName(ref this, p);
			public HRESULT get_parent(out IXMLElement2* ppParent) mut => VT.get_parent(ref this, out ppParent);
			public HRESULT setAttribute(BSTR strPropertyName, VARIANT PropertyValue) mut => VT.setAttribute(ref this, strPropertyName, PropertyValue);
			public HRESULT getAttribute(BSTR strPropertyName, out VARIANT PropertyValue) mut => VT.getAttribute(ref this, strPropertyName, out PropertyValue);
			public HRESULT removeAttribute(BSTR strPropertyName) mut => VT.removeAttribute(ref this, strPropertyName);
			public HRESULT get_children(out IXMLElementCollection* pp) mut => VT.get_children(ref this, out pp);
			public HRESULT get_type(out int32 plType) mut => VT.get_type(ref this, out plType);
			public HRESULT get_text(out BSTR p) mut => VT.get_text(ref this, out p);
			public HRESULT put_text(BSTR p) mut => VT.put_text(ref this, p);
			public HRESULT addChild(ref IXMLElement2 pChildElem, int32 lIndex, int32 lReserved) mut => VT.addChild(ref this, ref pChildElem, lIndex, lReserved);
			public HRESULT removeChild(ref IXMLElement2 pChildElem) mut => VT.removeChild(ref this, ref pChildElem);
			public HRESULT get_attributes(out IXMLElementCollection* pp) mut => VT.get_attributes(ref this, out pp);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out BSTR p) get_tagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, BSTR p) put_tagName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out IXMLElement2* ppParent) get_parent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, BSTR strPropertyName, VARIANT PropertyValue) setAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, BSTR strPropertyName, out VARIANT PropertyValue) getAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, BSTR strPropertyName) removeAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out IXMLElementCollection* pp) get_children;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out int32 plType) get_type;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out BSTR p) get_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, BSTR p) put_text;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, ref IXMLElement2 pChildElem, int32 lIndex, int32 lReserved) addChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, ref IXMLElement2 pChildElem) removeChild;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLElement2 self, out IXMLElementCollection* pp) get_attributes;
			}
		}
		[CRepr]
		public struct IXMLAttribute : IDispatch
		{
			public const new Guid IID = .(0xd4d4a0fc, 0x3b73, 0x11d1, 0xb2, 0xb4, 0x00, 0xc0, 0x4f, 0xb9, 0x25, 0x96);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_name(out BSTR n) mut => VT.get_name(ref this, out n);
			public HRESULT get_value(out BSTR v) mut => VT.get_value(ref this, out v);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLAttribute self, out BSTR n) get_name;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLAttribute self, out BSTR v) get_value;
			}
		}
		[CRepr]
		public struct IXMLError : IUnknown
		{
			public const new Guid IID = .(0x948c5ad3, 0xc58d, 0x11d0, 0x9c, 0x0b, 0x00, 0xc0, 0x4f, 0xc9, 0x9c, 0x8e);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT GetErrorInfo(out XML_ERROR pErrorReturn) mut => VT.GetErrorInfo(ref this, out pErrorReturn);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLError self, out XML_ERROR pErrorReturn) GetErrorInfo;
			}
		}
		[CRepr]
		public struct IXMLDOMDocument2 : IXMLDOMDocument
		{
			public const new Guid IID = .(0x2933bf95, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_namespaces(out IXMLDOMSchemaCollection* namespaceCollection) mut => VT.get_namespaces(ref this, out namespaceCollection);
			public HRESULT get_schemas(out VARIANT otherCollection) mut => VT.get_schemas(ref this, out otherCollection);
			public HRESULT putref_schemas(VARIANT otherCollection) mut => VT.putref_schemas(ref this, otherCollection);
			public HRESULT validate(out IXMLDOMParseError* errorObj) mut => VT.validate(ref this, out errorObj);
			public HRESULT setProperty(BSTR name, VARIANT value) mut => VT.setProperty(ref this, name, value);
			public HRESULT getProperty(BSTR name, out VARIANT value) mut => VT.getProperty(ref this, name, out value);

			[CRepr]
			public struct VTable : IXMLDOMDocument.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, out IXMLDOMSchemaCollection* namespaceCollection) get_namespaces;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, out VARIANT otherCollection) get_schemas;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, VARIANT otherCollection) putref_schemas;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, out IXMLDOMParseError* errorObj) validate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, BSTR name, VARIANT value) setProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument2 self, BSTR name, out VARIANT value) getProperty;
			}
		}
		[CRepr]
		public struct IXMLDOMDocument3 : IXMLDOMDocument2
		{
			public const new Guid IID = .(0x2933bf96, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT validateNode(ref IXMLDOMNode node, out IXMLDOMParseError* errorObj) mut => VT.validateNode(ref this, ref node, out errorObj);
			public HRESULT importNode(ref IXMLDOMNode node, int16 deep, out IXMLDOMNode* clone) mut => VT.importNode(ref this, ref node, deep, out clone);

			[CRepr]
			public struct VTable : IXMLDOMDocument2.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument3 self, ref IXMLDOMNode node, out IXMLDOMParseError* errorObj) validateNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMDocument3 self, ref IXMLDOMNode node, int16 deep, out IXMLDOMNode* clone) importNode;
			}
		}
		[CRepr]
		public struct IXMLDOMSchemaCollection : IDispatch
		{
			public const new Guid IID = .(0x373984c8, 0xb845, 0x449b, 0x91, 0xe7, 0x45, 0xac, 0x83, 0x03, 0x6a, 0xde);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT add(BSTR namespaceURI, VARIANT @var) mut => VT.add(ref this, namespaceURI, @var);
			public HRESULT get(BSTR namespaceURI, out IXMLDOMNode* schemaNode) mut => VT.get(ref this, namespaceURI, out schemaNode);
			public HRESULT remove(BSTR namespaceURI) mut => VT.remove(ref this, namespaceURI);
			public HRESULT get_length(out int32 length) mut => VT.get_length(ref this, out length);
			public HRESULT get_namespaceURI(int32 index, out BSTR length) mut => VT.get_namespaceURI(ref this, index, out length);
			public HRESULT addCollection(ref IXMLDOMSchemaCollection otherCollection) mut => VT.addCollection(ref this, ref otherCollection);
			public HRESULT get__newEnum(out IUnknown* ppUnk) mut => VT.get__newEnum(ref this, out ppUnk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, BSTR namespaceURI, VARIANT @var) add;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, BSTR namespaceURI, out IXMLDOMNode* schemaNode) get;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, BSTR namespaceURI) remove;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, out int32 length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, int32 index, out BSTR length) get_namespaceURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, ref IXMLDOMSchemaCollection otherCollection) addCollection;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection self, out IUnknown* ppUnk) get__newEnum;
			}
		}
		[CRepr]
		public struct IXMLDOMSelection : IXMLDOMNodeList
		{
			public const new Guid IID = .(0xaa634fc7, 0x5888, 0x44a7, 0xa2, 0x57, 0x3a, 0x47, 0x15, 0x0d, 0x3a, 0x0e);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_expr(out BSTR expression) mut => VT.get_expr(ref this, out expression);
			public HRESULT put_expr(BSTR expression) mut => VT.put_expr(ref this, expression);
			public HRESULT get_context(out IXMLDOMNode* ppNode) mut => VT.get_context(ref this, out ppNode);
			public HRESULT putref_context(ref IXMLDOMNode pNode) mut => VT.putref_context(ref this, ref pNode);
			public HRESULT peekNode(out IXMLDOMNode* ppNode) mut => VT.peekNode(ref this, out ppNode);
			public HRESULT matches(ref IXMLDOMNode pNode, out IXMLDOMNode* ppNode) mut => VT.matches(ref this, ref pNode, out ppNode);
			public HRESULT removeNext(out IXMLDOMNode* ppNode) mut => VT.removeNext(ref this, out ppNode);
			public HRESULT removeAll() mut => VT.removeAll(ref this);
			public HRESULT clone(out IXMLDOMSelection* ppNode) mut => VT.clone(ref this, out ppNode);
			public HRESULT getProperty(BSTR name, out VARIANT value) mut => VT.getProperty(ref this, name, out value);
			public HRESULT setProperty(BSTR name, VARIANT value) mut => VT.setProperty(ref this, name, value);

			[CRepr]
			public struct VTable : IXMLDOMNodeList.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, out BSTR expression) get_expr;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, BSTR expression) put_expr;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, out IXMLDOMNode* ppNode) get_context;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, ref IXMLDOMNode pNode) putref_context;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, out IXMLDOMNode* ppNode) peekNode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, ref IXMLDOMNode pNode, out IXMLDOMNode* ppNode) matches;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, out IXMLDOMNode* ppNode) removeNext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self) removeAll;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, out IXMLDOMSelection* ppNode) clone;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, BSTR name, out VARIANT value) getProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSelection self, BSTR name, VARIANT value) setProperty;
			}
		}
		[CRepr]
		public struct IXMLDOMParseError2 : IXMLDOMParseError
		{
			public const new Guid IID = .(0x3efaa428, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_errorXPath(out BSTR xpathexpr) mut => VT.get_errorXPath(ref this, out xpathexpr);
			public HRESULT get_allErrors(out IXMLDOMParseErrorCollection* allErrors) mut => VT.get_allErrors(ref this, out allErrors);
			public HRESULT errorParameters(int32 index, out BSTR param1) mut => VT.errorParameters(ref this, index, out param1);
			public HRESULT get_errorParametersCount(out int32 count) mut => VT.get_errorParametersCount(ref this, out count);

			[CRepr]
			public struct VTable : IXMLDOMParseError.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError2 self, out BSTR xpathexpr) get_errorXPath;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError2 self, out IXMLDOMParseErrorCollection* allErrors) get_allErrors;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError2 self, int32 index, out BSTR param1) errorParameters;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseError2 self, out int32 count) get_errorParametersCount;
			}
		}
		[CRepr]
		public struct IXMLDOMParseErrorCollection : IDispatch
		{
			public const new Guid IID = .(0x3efaa429, 0x272f, 0x11d2, 0x83, 0x6f, 0x00, 0x00, 0xf8, 0x7a, 0x77, 0x82);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_item(int32 index, out IXMLDOMParseError2* error) mut => VT.get_item(ref this, index, out error);
			public HRESULT get_length(out int32 length) mut => VT.get_length(ref this, out length);
			public HRESULT get_next(out IXMLDOMParseError2* error) mut => VT.get_next(ref this, out error);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT get__newEnum(out IUnknown* ppunk) mut => VT.get__newEnum(ref this, out ppunk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseErrorCollection self, int32 index, out IXMLDOMParseError2* error) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseErrorCollection self, out int32 length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseErrorCollection self, out IXMLDOMParseError2* error) get_next;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseErrorCollection self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMParseErrorCollection self, out IUnknown* ppunk) get__newEnum;
			}
		}
		[CRepr]
		public struct IXSLProcessor : IDispatch
		{
			public const new Guid IID = .(0x2933bf92, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT put_input(VARIANT @var) mut => VT.put_input(ref this, @var);
			public HRESULT get_input(out VARIANT pVar) mut => VT.get_input(ref this, out pVar);
			public HRESULT get_ownerTemplate(out IXSLTemplate* ppTemplate) mut => VT.get_ownerTemplate(ref this, out ppTemplate);
			public HRESULT setStartMode(BSTR mode, BSTR namespaceURI) mut => VT.setStartMode(ref this, mode, namespaceURI);
			public HRESULT get_startMode(out BSTR mode) mut => VT.get_startMode(ref this, out mode);
			public HRESULT get_startModeURI(out BSTR namespaceURI) mut => VT.get_startModeURI(ref this, out namespaceURI);
			public HRESULT put_output(VARIANT output) mut => VT.put_output(ref this, output);
			public HRESULT get_output(out VARIANT pOutput) mut => VT.get_output(ref this, out pOutput);
			public HRESULT transform(out int16 pDone) mut => VT.transform(ref this, out pDone);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT get_readyState(out int32 pReadyState) mut => VT.get_readyState(ref this, out pReadyState);
			public HRESULT addParameter(BSTR baseName, VARIANT parameter, BSTR namespaceURI) mut => VT.addParameter(ref this, baseName, parameter, namespaceURI);
			public HRESULT addObject(ref IDispatch obj, BSTR namespaceURI) mut => VT.addObject(ref this, ref obj, namespaceURI);
			public HRESULT get_stylesheet(out IXMLDOMNode* stylesheet) mut => VT.get_stylesheet(ref this, out stylesheet);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, VARIANT @var) put_input;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out VARIANT pVar) get_input;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out IXSLTemplate* ppTemplate) get_ownerTemplate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, BSTR mode, BSTR namespaceURI) setStartMode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out BSTR mode) get_startMode;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out BSTR namespaceURI) get_startModeURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, VARIANT output) put_output;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out VARIANT pOutput) get_output;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out int16 pDone) transform;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out int32 pReadyState) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, BSTR baseName, VARIANT parameter, BSTR namespaceURI) addParameter;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, ref IDispatch obj, BSTR namespaceURI) addObject;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLProcessor self, out IXMLDOMNode* stylesheet) get_stylesheet;
			}
		}
		[CRepr]
		public struct IXSLTemplate : IDispatch
		{
			public const new Guid IID = .(0x2933bf93, 0x7b36, 0x11d2, 0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT putref_stylesheet(ref IXMLDOMNode stylesheet) mut => VT.putref_stylesheet(ref this, ref stylesheet);
			public HRESULT get_stylesheet(out IXMLDOMNode* stylesheet) mut => VT.get_stylesheet(ref this, out stylesheet);
			public HRESULT createProcessor(out IXSLProcessor* ppProcessor) mut => VT.createProcessor(ref this, out ppProcessor);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLTemplate self, ref IXMLDOMNode stylesheet) putref_stylesheet;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLTemplate self, out IXMLDOMNode* stylesheet) get_stylesheet;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXSLTemplate self, out IXSLProcessor* ppProcessor) createProcessor;
			}
		}
		[CRepr]
		public struct IXMLHTTPRequest : IDispatch
		{
			public const new Guid IID = .(0xed8c108d, 0x4349, 0x11d2, 0x91, 0xa4, 0x00, 0xc0, 0x4f, 0x79, 0x69, 0xe8);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT open(BSTR bstrMethod, BSTR bstrUrl, VARIANT varAsync, VARIANT bstrUser, VARIANT bstrPassword) mut => VT.open(ref this, bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
			public HRESULT setRequestHeader(BSTR bstrHeader, BSTR bstrValue) mut => VT.setRequestHeader(ref this, bstrHeader, bstrValue);
			public HRESULT getResponseHeader(BSTR bstrHeader, out BSTR pbstrValue) mut => VT.getResponseHeader(ref this, bstrHeader, out pbstrValue);
			public HRESULT getAllResponseHeaders(out BSTR pbstrHeaders) mut => VT.getAllResponseHeaders(ref this, out pbstrHeaders);
			public HRESULT send(VARIANT varBody) mut => VT.send(ref this, varBody);
			public HRESULT abort() mut => VT.abort(ref this);
			public HRESULT get_status(out int32 plStatus) mut => VT.get_status(ref this, out plStatus);
			public HRESULT get_statusText(out BSTR pbstrStatus) mut => VT.get_statusText(ref this, out pbstrStatus);
			public HRESULT get_responseXML(out IDispatch* ppBody) mut => VT.get_responseXML(ref this, out ppBody);
			public HRESULT get_responseText(out BSTR pbstrBody) mut => VT.get_responseText(ref this, out pbstrBody);
			public HRESULT get_responseBody(out VARIANT pvarBody) mut => VT.get_responseBody(ref this, out pvarBody);
			public HRESULT get_responseStream(out VARIANT pvarBody) mut => VT.get_responseStream(ref this, out pvarBody);
			public HRESULT get_readyState(out int32 plState) mut => VT.get_readyState(ref this, out plState);
			public HRESULT put_onreadystatechange(ref IDispatch pReadyStateSink) mut => VT.put_onreadystatechange(ref this, ref pReadyStateSink);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, BSTR bstrMethod, BSTR bstrUrl, VARIANT varAsync, VARIANT bstrUser, VARIANT bstrPassword) open;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, BSTR bstrHeader, BSTR bstrValue) setRequestHeader;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, BSTR bstrHeader, out BSTR pbstrValue) getResponseHeader;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out BSTR pbstrHeaders) getAllResponseHeaders;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, VARIANT varBody) send;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self) abort;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out int32 plStatus) get_status;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out BSTR pbstrStatus) get_statusText;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out IDispatch* ppBody) get_responseXML;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out BSTR pbstrBody) get_responseText;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out VARIANT pvarBody) get_responseBody;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out VARIANT pvarBody) get_responseStream;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, out int32 plState) get_readyState;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest self, ref IDispatch pReadyStateSink) put_onreadystatechange;
			}
		}
		[CRepr]
		public struct IServerXMLHTTPRequest : IXMLHTTPRequest
		{
			public const new Guid IID = .(0x2e9196bf, 0x13ba, 0x4dd4, 0x91, 0xca, 0x6c, 0x57, 0x1f, 0x28, 0x14, 0x95);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT setTimeouts(int32 resolveTimeout, int32 connectTimeout, int32 sendTimeout, int32 receiveTimeout) mut => VT.setTimeouts(ref this, resolveTimeout, connectTimeout, sendTimeout, receiveTimeout);
			public HRESULT waitForResponse(VARIANT timeoutInSeconds, out int16 isSuccessful) mut => VT.waitForResponse(ref this, timeoutInSeconds, out isSuccessful);
			public HRESULT getOption(SERVERXMLHTTP_OPTION option, out VARIANT value) mut => VT.getOption(ref this, option, out value);
			public HRESULT setOption(SERVERXMLHTTP_OPTION option, VARIANT value) mut => VT.setOption(ref this, option, value);

			[CRepr]
			public struct VTable : IXMLHTTPRequest.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest self, int32 resolveTimeout, int32 connectTimeout, int32 sendTimeout, int32 receiveTimeout) setTimeouts;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest self, VARIANT timeoutInSeconds, out int16 isSuccessful) waitForResponse;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest self, SERVERXMLHTTP_OPTION option, out VARIANT value) getOption;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest self, SERVERXMLHTTP_OPTION option, VARIANT value) setOption;
			}
		}
		[CRepr]
		public struct IServerXMLHTTPRequest2 : IServerXMLHTTPRequest
		{
			public const new Guid IID = .(0x2e01311b, 0xc322, 0x4b0a, 0xbd, 0x77, 0xb9, 0x0c, 0xfd, 0xc8, 0xdc, 0xe7);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT setProxy(SXH_PROXY_SETTING proxySetting, VARIANT varProxyServer, VARIANT varBypassList) mut => VT.setProxy(ref this, proxySetting, varProxyServer, varBypassList);
			public HRESULT setProxyCredentials(BSTR bstrUserName, BSTR bstrPassword) mut => VT.setProxyCredentials(ref this, bstrUserName, bstrPassword);

			[CRepr]
			public struct VTable : IServerXMLHTTPRequest.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest2 self, SXH_PROXY_SETTING proxySetting, VARIANT varProxyServer, VARIANT varBypassList) setProxy;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IServerXMLHTTPRequest2 self, BSTR bstrUserName, BSTR bstrPassword) setProxyCredentials;
			}
		}
		[CRepr]
		public struct ISAXXMLReader : IUnknown
		{
			public const new Guid IID = .(0xa4f96ed0, 0xf829, 0x476e, 0x81, 0xc0, 0xcd, 0xc7, 0xbd, 0x2a, 0x08, 0x02);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getFeature(PWSTR pwchName, out int16 pvfValue) mut => VT.getFeature(ref this, pwchName, out pvfValue);
			public HRESULT putFeature(PWSTR pwchName, int16 vfValue) mut => VT.putFeature(ref this, pwchName, vfValue);
			public HRESULT getProperty(PWSTR pwchName, out VARIANT pvarValue) mut => VT.getProperty(ref this, pwchName, out pvarValue);
			public HRESULT putProperty(PWSTR pwchName, VARIANT varValue) mut => VT.putProperty(ref this, pwchName, varValue);
			public HRESULT getEntityResolver(out ISAXEntityResolver* ppResolver) mut => VT.getEntityResolver(ref this, out ppResolver);
			public HRESULT putEntityResolver(ref ISAXEntityResolver pResolver) mut => VT.putEntityResolver(ref this, ref pResolver);
			public HRESULT getContentHandler(out ISAXContentHandler* ppHandler) mut => VT.getContentHandler(ref this, out ppHandler);
			public HRESULT putContentHandler(ref ISAXContentHandler pHandler) mut => VT.putContentHandler(ref this, ref pHandler);
			public HRESULT getDTDHandler(out ISAXDTDHandler* ppHandler) mut => VT.getDTDHandler(ref this, out ppHandler);
			public HRESULT putDTDHandler(ref ISAXDTDHandler pHandler) mut => VT.putDTDHandler(ref this, ref pHandler);
			public HRESULT getErrorHandler(out ISAXErrorHandler* ppHandler) mut => VT.getErrorHandler(ref this, out ppHandler);
			public HRESULT putErrorHandler(ref ISAXErrorHandler pHandler) mut => VT.putErrorHandler(ref this, ref pHandler);
			public HRESULT getBaseURL(out uint16* ppwchBaseUrl) mut => VT.getBaseURL(ref this, out ppwchBaseUrl);
			public HRESULT putBaseURL(PWSTR pwchBaseUrl) mut => VT.putBaseURL(ref this, pwchBaseUrl);
			public HRESULT getSecureBaseURL(out uint16* ppwchSecureBaseUrl) mut => VT.getSecureBaseURL(ref this, out ppwchSecureBaseUrl);
			public HRESULT putSecureBaseURL(PWSTR pwchSecureBaseUrl) mut => VT.putSecureBaseURL(ref this, pwchSecureBaseUrl);
			public HRESULT parse(VARIANT varInput) mut => VT.parse(ref this, varInput);
			public HRESULT parseURL(PWSTR pwchUrl) mut => VT.parseURL(ref this, pwchUrl);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchName, out int16 pvfValue) getFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchName, int16 vfValue) putFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchName, out VARIANT pvarValue) getProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchName, VARIANT varValue) putProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out ISAXEntityResolver* ppResolver) getEntityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, ref ISAXEntityResolver pResolver) putEntityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out ISAXContentHandler* ppHandler) getContentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, ref ISAXContentHandler pHandler) putContentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out ISAXDTDHandler* ppHandler) getDTDHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, ref ISAXDTDHandler pHandler) putDTDHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out ISAXErrorHandler* ppHandler) getErrorHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, ref ISAXErrorHandler pHandler) putErrorHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out uint16* ppwchBaseUrl) getBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchBaseUrl) putBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, out uint16* ppwchSecureBaseUrl) getSecureBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchSecureBaseUrl) putSecureBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, VARIANT varInput) parse;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLReader self, PWSTR pwchUrl) parseURL;
			}
		}
		[CRepr]
		public struct ISAXXMLFilter : ISAXXMLReader
		{
			public const new Guid IID = .(0x70409222, 0xca09, 0x4475, 0xac, 0xb8, 0x40, 0x31, 0x2f, 0xe8, 0xd1, 0x45);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getParent(out ISAXXMLReader* ppReader) mut => VT.getParent(ref this, out ppReader);
			public HRESULT putParent(ref ISAXXMLReader pReader) mut => VT.putParent(ref this, ref pReader);

			[CRepr]
			public struct VTable : ISAXXMLReader.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLFilter self, out ISAXXMLReader* ppReader) getParent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXXMLFilter self, ref ISAXXMLReader pReader) putParent;
			}
		}
		[CRepr]
		public struct ISAXLocator : IUnknown
		{
			public const new Guid IID = .(0x9b7e472a, 0x0de4, 0x4640, 0xbf, 0xf3, 0x84, 0xd3, 0x8a, 0x05, 0x1c, 0x31);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getColumnNumber(out int32 pnColumn) mut => VT.getColumnNumber(ref this, out pnColumn);
			public HRESULT getLineNumber(out int32 pnLine) mut => VT.getLineNumber(ref this, out pnLine);
			public HRESULT getPublicId(out uint16* ppwchPublicId) mut => VT.getPublicId(ref this, out ppwchPublicId);
			public HRESULT getSystemId(out uint16* ppwchSystemId) mut => VT.getSystemId(ref this, out ppwchSystemId);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLocator self, out int32 pnColumn) getColumnNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLocator self, out int32 pnLine) getLineNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLocator self, out uint16* ppwchPublicId) getPublicId;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLocator self, out uint16* ppwchSystemId) getSystemId;
			}
		}
		[CRepr]
		public struct ISAXEntityResolver : IUnknown
		{
			public const new Guid IID = .(0x99bca7bd, 0xe8c4, 0x4d5f, 0xa0, 0xcf, 0x6d, 0x90, 0x79, 0x01, 0xff, 0x07);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT resolveEntity(PWSTR pwchPublicId, PWSTR pwchSystemId, out VARIANT pvarInput) mut => VT.resolveEntity(ref this, pwchPublicId, pwchSystemId, out pvarInput);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXEntityResolver self, PWSTR pwchPublicId, PWSTR pwchSystemId, out VARIANT pvarInput) resolveEntity;
			}
		}
		[CRepr]
		public struct ISAXContentHandler : IUnknown
		{
			public const new Guid IID = .(0x1545cdfa, 0x9e4e, 0x4497, 0xa8, 0xa4, 0x2b, 0xf7, 0xd0, 0x11, 0x2c, 0x44);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT putDocumentLocator(ref ISAXLocator pLocator) mut => VT.putDocumentLocator(ref this, ref pLocator);
			public HRESULT startDocument() mut => VT.startDocument(ref this);
			public HRESULT endDocument() mut => VT.endDocument(ref this);
			public HRESULT startPrefixMapping(PWSTR pwchPrefix, int32 cchPrefix, PWSTR pwchUri, int32 cchUri) mut => VT.startPrefixMapping(ref this, pwchPrefix, cchPrefix, pwchUri, cchUri);
			public HRESULT endPrefixMapping(PWSTR pwchPrefix, int32 cchPrefix) mut => VT.endPrefixMapping(ref this, pwchPrefix, cchPrefix);
			public HRESULT startElement(PWSTR pwchNamespaceUri, int32 cchNamespaceUri, PWSTR pwchLocalName, int32 cchLocalName, PWSTR pwchQName, int32 cchQName, ref ISAXAttributes pAttributes) mut => VT.startElement(ref this, pwchNamespaceUri, cchNamespaceUri, pwchLocalName, cchLocalName, pwchQName, cchQName, ref pAttributes);
			public HRESULT endElement(PWSTR pwchNamespaceUri, int32 cchNamespaceUri, PWSTR pwchLocalName, int32 cchLocalName, PWSTR pwchQName, int32 cchQName) mut => VT.endElement(ref this, pwchNamespaceUri, cchNamespaceUri, pwchLocalName, cchLocalName, pwchQName, cchQName);
			public HRESULT characters(PWSTR pwchChars, int32 cchChars) mut => VT.characters(ref this, pwchChars, cchChars);
			public HRESULT ignorableWhitespace(PWSTR pwchChars, int32 cchChars) mut => VT.ignorableWhitespace(ref this, pwchChars, cchChars);
			public HRESULT processingInstruction(PWSTR pwchTarget, int32 cchTarget, PWSTR pwchData, int32 cchData) mut => VT.processingInstruction(ref this, pwchTarget, cchTarget, pwchData, cchData);
			public HRESULT skippedEntity(PWSTR pwchName, int32 cchName) mut => VT.skippedEntity(ref this, pwchName, cchName);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, ref ISAXLocator pLocator) putDocumentLocator;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self) startDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self) endDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchPrefix, int32 cchPrefix, PWSTR pwchUri, int32 cchUri) startPrefixMapping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchPrefix, int32 cchPrefix) endPrefixMapping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchNamespaceUri, int32 cchNamespaceUri, PWSTR pwchLocalName, int32 cchLocalName, PWSTR pwchQName, int32 cchQName, ref ISAXAttributes pAttributes) startElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchNamespaceUri, int32 cchNamespaceUri, PWSTR pwchLocalName, int32 cchLocalName, PWSTR pwchQName, int32 cchQName) endElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchChars, int32 cchChars) characters;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchChars, int32 cchChars) ignorableWhitespace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchTarget, int32 cchTarget, PWSTR pwchData, int32 cchData) processingInstruction;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXContentHandler self, PWSTR pwchName, int32 cchName) skippedEntity;
			}
		}
		[CRepr]
		public struct ISAXDTDHandler : IUnknown
		{
			public const new Guid IID = .(0xe15c1baf, 0xafb3, 0x4d60, 0x8c, 0x36, 0x19, 0xa8, 0xc4, 0x5d, 0xef, 0xed);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT notationDecl(PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) mut => VT.notationDecl(ref this, pwchName, cchName, pwchPublicId, cchPublicId, pwchSystemId, cchSystemId);
			public HRESULT unparsedEntityDecl(PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId, PWSTR pwchNotationName, int32 cchNotationName) mut => VT.unparsedEntityDecl(ref this, pwchName, cchName, pwchPublicId, cchPublicId, pwchSystemId, cchSystemId, pwchNotationName, cchNotationName);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDTDHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) notationDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDTDHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId, PWSTR pwchNotationName, int32 cchNotationName) unparsedEntityDecl;
			}
		}
		[CRepr]
		public struct ISAXErrorHandler : IUnknown
		{
			public const new Guid IID = .(0xa60511c4, 0xccf5, 0x479e, 0x98, 0xa3, 0xdc, 0x8d, 0xc5, 0x45, 0xb7, 0xd0);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT error(ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) mut => VT.error(ref this, ref pLocator, pwchErrorMessage, hrErrorCode);
			public HRESULT fatalError(ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) mut => VT.fatalError(ref this, ref pLocator, pwchErrorMessage, hrErrorCode);
			public HRESULT ignorableWarning(ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) mut => VT.ignorableWarning(ref this, ref pLocator, pwchErrorMessage, hrErrorCode);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXErrorHandler self, ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) error;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXErrorHandler self, ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) fatalError;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXErrorHandler self, ref ISAXLocator pLocator, PWSTR pwchErrorMessage, HRESULT hrErrorCode) ignorableWarning;
			}
		}
		[CRepr]
		public struct ISAXLexicalHandler : IUnknown
		{
			public const new Guid IID = .(0x7f85d5f5, 0x47a8, 0x4497, 0xbd, 0xa5, 0x84, 0xba, 0x04, 0x81, 0x9e, 0xa6);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT startDTD(PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) mut => VT.startDTD(ref this, pwchName, cchName, pwchPublicId, cchPublicId, pwchSystemId, cchSystemId);
			public HRESULT endDTD() mut => VT.endDTD(ref this);
			public HRESULT startEntity(PWSTR pwchName, int32 cchName) mut => VT.startEntity(ref this, pwchName, cchName);
			public HRESULT endEntity(PWSTR pwchName, int32 cchName) mut => VT.endEntity(ref this, pwchName, cchName);
			public HRESULT startCDATA() mut => VT.startCDATA(ref this);
			public HRESULT endCDATA() mut => VT.endCDATA(ref this);
			public HRESULT comment(PWSTR pwchChars, int32 cchChars) mut => VT.comment(ref this, pwchChars, cchChars);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) startDTD;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self) endDTD;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self, PWSTR pwchName, int32 cchName) startEntity;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self, PWSTR pwchName, int32 cchName) endEntity;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self) startCDATA;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self) endCDATA;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXLexicalHandler self, PWSTR pwchChars, int32 cchChars) comment;
			}
		}
		[CRepr]
		public struct ISAXDeclHandler : IUnknown
		{
			public const new Guid IID = .(0x862629ac, 0x771a, 0x47b2, 0x83, 0x37, 0x4e, 0x68, 0x43, 0xc1, 0xbe, 0x90);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT elementDecl(PWSTR pwchName, int32 cchName, PWSTR pwchModel, int32 cchModel) mut => VT.elementDecl(ref this, pwchName, cchName, pwchModel, cchModel);
			public HRESULT attributeDecl(PWSTR pwchElementName, int32 cchElementName, PWSTR pwchAttributeName, int32 cchAttributeName, PWSTR pwchType, int32 cchType, PWSTR pwchValueDefault, int32 cchValueDefault, PWSTR pwchValue, int32 cchValue) mut => VT.attributeDecl(ref this, pwchElementName, cchElementName, pwchAttributeName, cchAttributeName, pwchType, cchType, pwchValueDefault, cchValueDefault, pwchValue, cchValue);
			public HRESULT internalEntityDecl(PWSTR pwchName, int32 cchName, PWSTR pwchValue, int32 cchValue) mut => VT.internalEntityDecl(ref this, pwchName, cchName, pwchValue, cchValue);
			public HRESULT externalEntityDecl(PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) mut => VT.externalEntityDecl(ref this, pwchName, cchName, pwchPublicId, cchPublicId, pwchSystemId, cchSystemId);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDeclHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchModel, int32 cchModel) elementDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDeclHandler self, PWSTR pwchElementName, int32 cchElementName, PWSTR pwchAttributeName, int32 cchAttributeName, PWSTR pwchType, int32 cchType, PWSTR pwchValueDefault, int32 cchValueDefault, PWSTR pwchValue, int32 cchValue) attributeDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDeclHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchValue, int32 cchValue) internalEntityDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXDeclHandler self, PWSTR pwchName, int32 cchName, PWSTR pwchPublicId, int32 cchPublicId, PWSTR pwchSystemId, int32 cchSystemId) externalEntityDecl;
			}
		}
		[CRepr]
		public struct ISAXAttributes : IUnknown
		{
			public const new Guid IID = .(0xf078abe1, 0x45d2, 0x4832, 0x91, 0xea, 0x44, 0x66, 0xce, 0x2f, 0x25, 0xc9);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getLength(out int32 pnLength) mut => VT.getLength(ref this, out pnLength);
			public HRESULT getURI(int32 nIndex, out uint16* ppwchUri, out int32 pcchUri) mut => VT.getURI(ref this, nIndex, out ppwchUri, out pcchUri);
			public HRESULT getLocalName(int32 nIndex, out uint16* ppwchLocalName, out int32 pcchLocalName) mut => VT.getLocalName(ref this, nIndex, out ppwchLocalName, out pcchLocalName);
			public HRESULT getQName(int32 nIndex, out uint16* ppwchQName, out int32 pcchQName) mut => VT.getQName(ref this, nIndex, out ppwchQName, out pcchQName);
			public HRESULT getName(int32 nIndex, out uint16* ppwchUri, out int32 pcchUri, out uint16* ppwchLocalName, out int32 pcchLocalName, out uint16* ppwchQName, out int32 pcchQName) mut => VT.getName(ref this, nIndex, out ppwchUri, out pcchUri, out ppwchLocalName, out pcchLocalName, out ppwchQName, out pcchQName);
			public HRESULT getIndexFromName(PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out int32 pnIndex) mut => VT.getIndexFromName(ref this, pwchUri, cchUri, pwchLocalName, cchLocalName, out pnIndex);
			public HRESULT getIndexFromQName(PWSTR pwchQName, int32 cchQName, out int32 pnIndex) mut => VT.getIndexFromQName(ref this, pwchQName, cchQName, out pnIndex);
			public HRESULT getType(int32 nIndex, out uint16* ppwchType, out int32 pcchType) mut => VT.getType(ref this, nIndex, out ppwchType, out pcchType);
			public HRESULT getTypeFromName(PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out uint16* ppwchType, out int32 pcchType) mut => VT.getTypeFromName(ref this, pwchUri, cchUri, pwchLocalName, cchLocalName, out ppwchType, out pcchType);
			public HRESULT getTypeFromQName(PWSTR pwchQName, int32 cchQName, out uint16* ppwchType, out int32 pcchType) mut => VT.getTypeFromQName(ref this, pwchQName, cchQName, out ppwchType, out pcchType);
			public HRESULT getValue(int32 nIndex, out uint16* ppwchValue, out int32 pcchValue) mut => VT.getValue(ref this, nIndex, out ppwchValue, out pcchValue);
			public HRESULT getValueFromName(PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out uint16* ppwchValue, out int32 pcchValue) mut => VT.getValueFromName(ref this, pwchUri, cchUri, pwchLocalName, cchLocalName, out ppwchValue, out pcchValue);
			public HRESULT getValueFromQName(PWSTR pwchQName, int32 cchQName, out uint16* ppwchValue, out int32 pcchValue) mut => VT.getValueFromQName(ref this, pwchQName, cchQName, out ppwchValue, out pcchValue);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, out int32 pnLength) getLength;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchUri, out int32 pcchUri) getURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchLocalName, out int32 pcchLocalName) getLocalName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchQName, out int32 pcchQName) getQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchUri, out int32 pcchUri, out uint16* ppwchLocalName, out int32 pcchLocalName, out uint16* ppwchQName, out int32 pcchQName) getName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out int32 pnIndex) getIndexFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchQName, int32 cchQName, out int32 pnIndex) getIndexFromQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchType, out int32 pcchType) getType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out uint16* ppwchType, out int32 pcchType) getTypeFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchQName, int32 cchQName, out uint16* ppwchType, out int32 pcchType) getTypeFromQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, int32 nIndex, out uint16* ppwchValue, out int32 pcchValue) getValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchUri, int32 cchUri, PWSTR pwchLocalName, int32 cchLocalName, out uint16* ppwchValue, out int32 pcchValue) getValueFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISAXAttributes self, PWSTR pwchQName, int32 cchQName, out uint16* ppwchValue, out int32 pcchValue) getValueFromQName;
			}
		}
		[CRepr]
		public struct IVBSAXXMLReader : IDispatch
		{
			public const new Guid IID = .(0x8c033caa, 0x6cd6, 0x4f73, 0xb7, 0x28, 0x45, 0x31, 0xaf, 0x74, 0x94, 0x5f);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getFeature(BSTR strName, out int16 fValue) mut => VT.getFeature(ref this, strName, out fValue);
			public HRESULT putFeature(BSTR strName, int16 fValue) mut => VT.putFeature(ref this, strName, fValue);
			public HRESULT getProperty(BSTR strName, out VARIANT varValue) mut => VT.getProperty(ref this, strName, out varValue);
			public HRESULT putProperty(BSTR strName, VARIANT varValue) mut => VT.putProperty(ref this, strName, varValue);
			public HRESULT get_entityResolver(out IVBSAXEntityResolver* oResolver) mut => VT.get_entityResolver(ref this, out oResolver);
			public HRESULT putref_entityResolver(ref IVBSAXEntityResolver oResolver) mut => VT.putref_entityResolver(ref this, ref oResolver);
			public HRESULT get_contentHandler(out IVBSAXContentHandler* oHandler) mut => VT.get_contentHandler(ref this, out oHandler);
			public HRESULT putref_contentHandler(ref IVBSAXContentHandler oHandler) mut => VT.putref_contentHandler(ref this, ref oHandler);
			public HRESULT get_dtdHandler(out IVBSAXDTDHandler* oHandler) mut => VT.get_dtdHandler(ref this, out oHandler);
			public HRESULT putref_dtdHandler(ref IVBSAXDTDHandler oHandler) mut => VT.putref_dtdHandler(ref this, ref oHandler);
			public HRESULT get_errorHandler(out IVBSAXErrorHandler* oHandler) mut => VT.get_errorHandler(ref this, out oHandler);
			public HRESULT putref_errorHandler(ref IVBSAXErrorHandler oHandler) mut => VT.putref_errorHandler(ref this, ref oHandler);
			public HRESULT get_baseURL(out BSTR strBaseURL) mut => VT.get_baseURL(ref this, out strBaseURL);
			public HRESULT put_baseURL(BSTR strBaseURL) mut => VT.put_baseURL(ref this, strBaseURL);
			public HRESULT get_secureBaseURL(out BSTR strSecureBaseURL) mut => VT.get_secureBaseURL(ref this, out strSecureBaseURL);
			public HRESULT put_secureBaseURL(BSTR strSecureBaseURL) mut => VT.put_secureBaseURL(ref this, strSecureBaseURL);
			public HRESULT parse(VARIANT varInput) mut => VT.parse(ref this, varInput);
			public HRESULT parseURL(BSTR strURL) mut => VT.parseURL(ref this, strURL);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strName, out int16 fValue) getFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strName, int16 fValue) putFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strName, out VARIANT varValue) getProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strName, VARIANT varValue) putProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out IVBSAXEntityResolver* oResolver) get_entityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, ref IVBSAXEntityResolver oResolver) putref_entityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out IVBSAXContentHandler* oHandler) get_contentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, ref IVBSAXContentHandler oHandler) putref_contentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out IVBSAXDTDHandler* oHandler) get_dtdHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, ref IVBSAXDTDHandler oHandler) putref_dtdHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out IVBSAXErrorHandler* oHandler) get_errorHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, ref IVBSAXErrorHandler oHandler) putref_errorHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out BSTR strBaseURL) get_baseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strBaseURL) put_baseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, out BSTR strSecureBaseURL) get_secureBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strSecureBaseURL) put_secureBaseURL;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, VARIANT varInput) parse;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLReader self, BSTR strURL) parseURL;
			}
		}
		[CRepr]
		public struct IVBSAXXMLFilter : IDispatch
		{
			public const new Guid IID = .(0x1299eb1b, 0x5b88, 0x433e, 0x82, 0xde, 0x82, 0xca, 0x75, 0xad, 0x4e, 0x04);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_parent(out IVBSAXXMLReader* oReader) mut => VT.get_parent(ref this, out oReader);
			public HRESULT putref_parent(ref IVBSAXXMLReader oReader) mut => VT.putref_parent(ref this, ref oReader);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLFilter self, out IVBSAXXMLReader* oReader) get_parent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXXMLFilter self, ref IVBSAXXMLReader oReader) putref_parent;
			}
		}
		[CRepr]
		public struct IVBSAXLocator : IDispatch
		{
			public const new Guid IID = .(0x796e7ac5, 0x5aa2, 0x4eff, 0xac, 0xad, 0x3f, 0xaa, 0xf0, 0x1a, 0x32, 0x88);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_columnNumber(out int32 nColumn) mut => VT.get_columnNumber(ref this, out nColumn);
			public HRESULT get_lineNumber(out int32 nLine) mut => VT.get_lineNumber(ref this, out nLine);
			public HRESULT get_publicId(out BSTR strPublicId) mut => VT.get_publicId(ref this, out strPublicId);
			public HRESULT get_systemId(out BSTR strSystemId) mut => VT.get_systemId(ref this, out strSystemId);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLocator self, out int32 nColumn) get_columnNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLocator self, out int32 nLine) get_lineNumber;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLocator self, out BSTR strPublicId) get_publicId;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLocator self, out BSTR strSystemId) get_systemId;
			}
		}
		[CRepr]
		public struct IVBSAXEntityResolver : IDispatch
		{
			public const new Guid IID = .(0x0c05d096, 0xf45b, 0x4aca, 0xad, 0x1a, 0xaa, 0x0b, 0xc2, 0x55, 0x18, 0xdc);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT resolveEntity(out BSTR strPublicId, out BSTR strSystemId, out VARIANT varInput) mut => VT.resolveEntity(ref this, out strPublicId, out strSystemId, out varInput);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXEntityResolver self, out BSTR strPublicId, out BSTR strSystemId, out VARIANT varInput) resolveEntity;
			}
		}
		[CRepr]
		public struct IVBSAXContentHandler : IDispatch
		{
			public const new Guid IID = .(0x2ed7290a, 0x4dd5, 0x4b46, 0xbb, 0x26, 0x4e, 0x41, 0x55, 0xe7, 0x7f, 0xaa);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT putref_documentLocator(ref IVBSAXLocator oLocator) mut => VT.putref_documentLocator(ref this, ref oLocator);
			public HRESULT startDocument() mut => VT.startDocument(ref this);
			public HRESULT endDocument() mut => VT.endDocument(ref this);
			public HRESULT startPrefixMapping(out BSTR strPrefix, out BSTR strURI) mut => VT.startPrefixMapping(ref this, out strPrefix, out strURI);
			public HRESULT endPrefixMapping(out BSTR strPrefix) mut => VT.endPrefixMapping(ref this, out strPrefix);
			public HRESULT startElement(out BSTR strNamespaceURI, out BSTR strLocalName, out BSTR strQName, ref IVBSAXAttributes oAttributes) mut => VT.startElement(ref this, out strNamespaceURI, out strLocalName, out strQName, ref oAttributes);
			public HRESULT endElement(out BSTR strNamespaceURI, out BSTR strLocalName, out BSTR strQName) mut => VT.endElement(ref this, out strNamespaceURI, out strLocalName, out strQName);
			public HRESULT characters(out BSTR strChars) mut => VT.characters(ref this, out strChars);
			public HRESULT ignorableWhitespace(out BSTR strChars) mut => VT.ignorableWhitespace(ref this, out strChars);
			public HRESULT processingInstruction(out BSTR strTarget, out BSTR strData) mut => VT.processingInstruction(ref this, out strTarget, out strData);
			public HRESULT skippedEntity(out BSTR strName) mut => VT.skippedEntity(ref this, out strName);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, ref IVBSAXLocator oLocator) putref_documentLocator;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self) startDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self) endDocument;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strPrefix, out BSTR strURI) startPrefixMapping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strPrefix) endPrefixMapping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strNamespaceURI, out BSTR strLocalName, out BSTR strQName, ref IVBSAXAttributes oAttributes) startElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strNamespaceURI, out BSTR strLocalName, out BSTR strQName) endElement;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strChars) characters;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strChars) ignorableWhitespace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strTarget, out BSTR strData) processingInstruction;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXContentHandler self, out BSTR strName) skippedEntity;
			}
		}
		[CRepr]
		public struct IVBSAXDTDHandler : IDispatch
		{
			public const new Guid IID = .(0x24fb3297, 0x302d, 0x4620, 0xba, 0x39, 0x3a, 0x73, 0x2d, 0x85, 0x05, 0x58);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT notationDecl(out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) mut => VT.notationDecl(ref this, out strName, out strPublicId, out strSystemId);
			public HRESULT unparsedEntityDecl(out BSTR strName, out BSTR strPublicId, out BSTR strSystemId, out BSTR strNotationName) mut => VT.unparsedEntityDecl(ref this, out strName, out strPublicId, out strSystemId, out strNotationName);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDTDHandler self, out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) notationDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDTDHandler self, out BSTR strName, out BSTR strPublicId, out BSTR strSystemId, out BSTR strNotationName) unparsedEntityDecl;
			}
		}
		[CRepr]
		public struct IVBSAXErrorHandler : IDispatch
		{
			public const new Guid IID = .(0xd963d3fe, 0x173c, 0x4862, 0x90, 0x95, 0xb9, 0x2f, 0x66, 0x99, 0x5f, 0x52);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT error(ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) mut => VT.error(ref this, ref oLocator, out strErrorMessage, nErrorCode);
			public HRESULT fatalError(ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) mut => VT.fatalError(ref this, ref oLocator, out strErrorMessage, nErrorCode);
			public HRESULT ignorableWarning(ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) mut => VT.ignorableWarning(ref this, ref oLocator, out strErrorMessage, nErrorCode);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXErrorHandler self, ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) error;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXErrorHandler self, ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) fatalError;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXErrorHandler self, ref IVBSAXLocator oLocator, out BSTR strErrorMessage, int32 nErrorCode) ignorableWarning;
			}
		}
		[CRepr]
		public struct IVBSAXLexicalHandler : IDispatch
		{
			public const new Guid IID = .(0x032aac35, 0x8c0e, 0x4d9d, 0x97, 0x9f, 0xe3, 0xb7, 0x02, 0x93, 0x55, 0x76);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT startDTD(out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) mut => VT.startDTD(ref this, out strName, out strPublicId, out strSystemId);
			public HRESULT endDTD() mut => VT.endDTD(ref this);
			public HRESULT startEntity(out BSTR strName) mut => VT.startEntity(ref this, out strName);
			public HRESULT endEntity(out BSTR strName) mut => VT.endEntity(ref this, out strName);
			public HRESULT startCDATA() mut => VT.startCDATA(ref this);
			public HRESULT endCDATA() mut => VT.endCDATA(ref this);
			public HRESULT comment(out BSTR strChars) mut => VT.comment(ref this, out strChars);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self, out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) startDTD;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self) endDTD;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self, out BSTR strName) startEntity;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self, out BSTR strName) endEntity;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self) startCDATA;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self) endCDATA;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXLexicalHandler self, out BSTR strChars) comment;
			}
		}
		[CRepr]
		public struct IVBSAXDeclHandler : IDispatch
		{
			public const new Guid IID = .(0xe8917260, 0x7579, 0x4be1, 0xb5, 0xdd, 0x7a, 0xfb, 0xfa, 0x6f, 0x07, 0x7b);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT elementDecl(out BSTR strName, out BSTR strModel) mut => VT.elementDecl(ref this, out strName, out strModel);
			public HRESULT attributeDecl(out BSTR strElementName, out BSTR strAttributeName, out BSTR strType, out BSTR strValueDefault, out BSTR strValue) mut => VT.attributeDecl(ref this, out strElementName, out strAttributeName, out strType, out strValueDefault, out strValue);
			public HRESULT internalEntityDecl(out BSTR strName, out BSTR strValue) mut => VT.internalEntityDecl(ref this, out strName, out strValue);
			public HRESULT externalEntityDecl(out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) mut => VT.externalEntityDecl(ref this, out strName, out strPublicId, out strSystemId);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDeclHandler self, out BSTR strName, out BSTR strModel) elementDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDeclHandler self, out BSTR strElementName, out BSTR strAttributeName, out BSTR strType, out BSTR strValueDefault, out BSTR strValue) attributeDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDeclHandler self, out BSTR strName, out BSTR strValue) internalEntityDecl;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXDeclHandler self, out BSTR strName, out BSTR strPublicId, out BSTR strSystemId) externalEntityDecl;
			}
		}
		[CRepr]
		public struct IVBSAXAttributes : IDispatch
		{
			public const new Guid IID = .(0x10dc0586, 0x132b, 0x4cac, 0x8b, 0xb3, 0xdb, 0x00, 0xac, 0x8b, 0x7e, 0xe0);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_length(out int32 nLength) mut => VT.get_length(ref this, out nLength);
			public HRESULT getURI(int32 nIndex, out BSTR strURI) mut => VT.getURI(ref this, nIndex, out strURI);
			public HRESULT getLocalName(int32 nIndex, out BSTR strLocalName) mut => VT.getLocalName(ref this, nIndex, out strLocalName);
			public HRESULT getQName(int32 nIndex, out BSTR strQName) mut => VT.getQName(ref this, nIndex, out strQName);
			public HRESULT getIndexFromName(BSTR strURI, BSTR strLocalName, out int32 nIndex) mut => VT.getIndexFromName(ref this, strURI, strLocalName, out nIndex);
			public HRESULT getIndexFromQName(BSTR strQName, out int32 nIndex) mut => VT.getIndexFromQName(ref this, strQName, out nIndex);
			public HRESULT getType(int32 nIndex, out BSTR strType) mut => VT.getType(ref this, nIndex, out strType);
			public HRESULT getTypeFromName(BSTR strURI, BSTR strLocalName, out BSTR strType) mut => VT.getTypeFromName(ref this, strURI, strLocalName, out strType);
			public HRESULT getTypeFromQName(BSTR strQName, out BSTR strType) mut => VT.getTypeFromQName(ref this, strQName, out strType);
			public HRESULT getValue(int32 nIndex, out BSTR strValue) mut => VT.getValue(ref this, nIndex, out strValue);
			public HRESULT getValueFromName(BSTR strURI, BSTR strLocalName, out BSTR strValue) mut => VT.getValueFromName(ref this, strURI, strLocalName, out strValue);
			public HRESULT getValueFromQName(BSTR strQName, out BSTR strValue) mut => VT.getValueFromQName(ref this, strQName, out strValue);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, out int32 nLength) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, int32 nIndex, out BSTR strURI) getURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, int32 nIndex, out BSTR strLocalName) getLocalName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, int32 nIndex, out BSTR strQName) getQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strURI, BSTR strLocalName, out int32 nIndex) getIndexFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strQName, out int32 nIndex) getIndexFromQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, int32 nIndex, out BSTR strType) getType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strURI, BSTR strLocalName, out BSTR strType) getTypeFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strQName, out BSTR strType) getTypeFromQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, int32 nIndex, out BSTR strValue) getValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strURI, BSTR strLocalName, out BSTR strValue) getValueFromName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBSAXAttributes self, BSTR strQName, out BSTR strValue) getValueFromQName;
			}
		}
		[CRepr]
		public struct IMXWriter : IDispatch
		{
			public const new Guid IID = .(0x4d7ff4ba, 0x1565, 0x4ea8, 0x94, 0xe1, 0x6e, 0x72, 0x4a, 0x46, 0xf9, 0x8d);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT put_output(VARIANT varDestination) mut => VT.put_output(ref this, varDestination);
			public HRESULT get_output(out VARIANT varDestination) mut => VT.get_output(ref this, out varDestination);
			public HRESULT put_encoding(BSTR strEncoding) mut => VT.put_encoding(ref this, strEncoding);
			public HRESULT get_encoding(out BSTR strEncoding) mut => VT.get_encoding(ref this, out strEncoding);
			public HRESULT put_byteOrderMark(int16 fWriteByteOrderMark) mut => VT.put_byteOrderMark(ref this, fWriteByteOrderMark);
			public HRESULT get_byteOrderMark(out int16 fWriteByteOrderMark) mut => VT.get_byteOrderMark(ref this, out fWriteByteOrderMark);
			public HRESULT put_indent(int16 fIndentMode) mut => VT.put_indent(ref this, fIndentMode);
			public HRESULT get_indent(out int16 fIndentMode) mut => VT.get_indent(ref this, out fIndentMode);
			public HRESULT put_standalone(int16 fValue) mut => VT.put_standalone(ref this, fValue);
			public HRESULT get_standalone(out int16 fValue) mut => VT.get_standalone(ref this, out fValue);
			public HRESULT put_omitXMLDeclaration(int16 fValue) mut => VT.put_omitXMLDeclaration(ref this, fValue);
			public HRESULT get_omitXMLDeclaration(out int16 fValue) mut => VT.get_omitXMLDeclaration(ref this, out fValue);
			public HRESULT put_version(BSTR strVersion) mut => VT.put_version(ref this, strVersion);
			public HRESULT get_version(out BSTR strVersion) mut => VT.get_version(ref this, out strVersion);
			public HRESULT put_disableOutputEscaping(int16 fValue) mut => VT.put_disableOutputEscaping(ref this, fValue);
			public HRESULT get_disableOutputEscaping(out int16 fValue) mut => VT.get_disableOutputEscaping(ref this, out fValue);
			public HRESULT flush() mut => VT.flush(ref this);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, VARIANT varDestination) put_output;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out VARIANT varDestination) get_output;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, BSTR strEncoding) put_encoding;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out BSTR strEncoding) get_encoding;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, int16 fWriteByteOrderMark) put_byteOrderMark;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out int16 fWriteByteOrderMark) get_byteOrderMark;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, int16 fIndentMode) put_indent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out int16 fIndentMode) get_indent;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, int16 fValue) put_standalone;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out int16 fValue) get_standalone;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, int16 fValue) put_omitXMLDeclaration;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out int16 fValue) get_omitXMLDeclaration;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, BSTR strVersion) put_version;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out BSTR strVersion) get_version;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, int16 fValue) put_disableOutputEscaping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self, out int16 fValue) get_disableOutputEscaping;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXWriter self) flush;
			}
		}
		[CRepr]
		public struct IMXAttributes : IDispatch
		{
			public const new Guid IID = .(0xf10d27cc, 0x3ec0, 0x415c, 0x8e, 0xd8, 0x77, 0xab, 0x1c, 0x5e, 0x72, 0x62);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT addAttribute(BSTR strURI, BSTR strLocalName, BSTR strQName, BSTR strType, BSTR strValue) mut => VT.addAttribute(ref this, strURI, strLocalName, strQName, strType, strValue);
			public HRESULT addAttributeFromIndex(VARIANT varAtts, int32 nIndex) mut => VT.addAttributeFromIndex(ref this, varAtts, nIndex);
			public HRESULT clear() mut => VT.clear(ref this);
			public HRESULT removeAttribute(int32 nIndex) mut => VT.removeAttribute(ref this, nIndex);
			public HRESULT setAttribute(int32 nIndex, BSTR strURI, BSTR strLocalName, BSTR strQName, BSTR strType, BSTR strValue) mut => VT.setAttribute(ref this, nIndex, strURI, strLocalName, strQName, strType, strValue);
			public HRESULT setAttributes(VARIANT varAtts) mut => VT.setAttributes(ref this, varAtts);
			public HRESULT setLocalName(int32 nIndex, BSTR strLocalName) mut => VT.setLocalName(ref this, nIndex, strLocalName);
			public HRESULT setQName(int32 nIndex, BSTR strQName) mut => VT.setQName(ref this, nIndex, strQName);
			public HRESULT setType(int32 nIndex, BSTR strType) mut => VT.setType(ref this, nIndex, strType);
			public HRESULT setURI(int32 nIndex, BSTR strURI) mut => VT.setURI(ref this, nIndex, strURI);
			public HRESULT setValue(int32 nIndex, BSTR strValue) mut => VT.setValue(ref this, nIndex, strValue);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, BSTR strURI, BSTR strLocalName, BSTR strQName, BSTR strType, BSTR strValue) addAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, VARIANT varAtts, int32 nIndex) addAttributeFromIndex;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self) clear;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex) removeAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strURI, BSTR strLocalName, BSTR strQName, BSTR strType, BSTR strValue) setAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, VARIANT varAtts) setAttributes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strLocalName) setLocalName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strQName) setQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strType) setType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strURI) setURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXAttributes self, int32 nIndex, BSTR strValue) setValue;
			}
		}
		[CRepr]
		public struct IMXReaderControl : IDispatch
		{
			public const new Guid IID = .(0x808f4e35, 0x8d5a, 0x4fbe, 0x84, 0x66, 0x33, 0xa4, 0x12, 0x79, 0xed, 0x30);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT abort() mut => VT.abort(ref this);
			public HRESULT resume() mut => VT.resume(ref this);
			public HRESULT suspend() mut => VT.suspend(ref this);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXReaderControl self) abort;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXReaderControl self) resume;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXReaderControl self) suspend;
			}
		}
		[CRepr]
		public struct IMXSchemaDeclHandler : IDispatch
		{
			public const new Guid IID = .(0xfa4bb38c, 0xfaf9, 0x4cca, 0x93, 0x02, 0xd1, 0xdd, 0x0f, 0xe5, 0x20, 0xdb);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT schemaElementDecl(ref ISchemaElement oSchemaElement) mut => VT.schemaElementDecl(ref this, ref oSchemaElement);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXSchemaDeclHandler self, ref ISchemaElement oSchemaElement) schemaElementDecl;
			}
		}
		[CRepr]
		public struct IMXNamespacePrefixes : IDispatch
		{
			public const new Guid IID = .(0xc90352f4, 0x643c, 0x4fbc, 0xbb, 0x23, 0xe9, 0x96, 0xeb, 0x2d, 0x51, 0xfd);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_item(int32 index, out BSTR prefix) mut => VT.get_item(ref this, index, out prefix);
			public HRESULT get_length(out int32 length) mut => VT.get_length(ref this, out length);
			public HRESULT get__newEnum(out IUnknown* ppUnk) mut => VT.get__newEnum(ref this, out ppUnk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespacePrefixes self, int32 index, out BSTR prefix) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespacePrefixes self, out int32 length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespacePrefixes self, out IUnknown* ppUnk) get__newEnum;
			}
		}
		[CRepr]
		public struct IVBMXNamespaceManager : IDispatch
		{
			public const new Guid IID = .(0xc90352f5, 0x643c, 0x4fbc, 0xbb, 0x23, 0xe9, 0x96, 0xeb, 0x2d, 0x51, 0xfd);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT put_allowOverride(int16 fOverride) mut => VT.put_allowOverride(ref this, fOverride);
			public HRESULT get_allowOverride(out int16 fOverride) mut => VT.get_allowOverride(ref this, out fOverride);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT pushContext() mut => VT.pushContext(ref this);
			public HRESULT pushNodeContext(ref IXMLDOMNode contextNode, int16 fDeep) mut => VT.pushNodeContext(ref this, ref contextNode, fDeep);
			public HRESULT popContext() mut => VT.popContext(ref this);
			public HRESULT declarePrefix(BSTR prefix, BSTR namespaceURI) mut => VT.declarePrefix(ref this, prefix, namespaceURI);
			public HRESULT getDeclaredPrefixes(out IMXNamespacePrefixes* prefixes) mut => VT.getDeclaredPrefixes(ref this, out prefixes);
			public HRESULT getPrefixes(BSTR namespaceURI, out IMXNamespacePrefixes* prefixes) mut => VT.getPrefixes(ref this, namespaceURI, out prefixes);
			public HRESULT getURI(BSTR prefix, out VARIANT uri) mut => VT.getURI(ref this, prefix, out uri);
			public HRESULT getURIFromNode(BSTR strPrefix, ref IXMLDOMNode contextNode, out VARIANT uri) mut => VT.getURIFromNode(ref this, strPrefix, ref contextNode, out uri);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, int16 fOverride) put_allowOverride;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, out int16 fOverride) get_allowOverride;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self) pushContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, ref IXMLDOMNode contextNode, int16 fDeep) pushNodeContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self) popContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, BSTR prefix, BSTR namespaceURI) declarePrefix;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, out IMXNamespacePrefixes* prefixes) getDeclaredPrefixes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, BSTR namespaceURI, out IMXNamespacePrefixes* prefixes) getPrefixes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, BSTR prefix, out VARIANT uri) getURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IVBMXNamespaceManager self, BSTR strPrefix, ref IXMLDOMNode contextNode, out VARIANT uri) getURIFromNode;
			}
		}
		[CRepr]
		public struct IMXNamespaceManager : IUnknown
		{
			public const new Guid IID = .(0xc90352f6, 0x643c, 0x4fbc, 0xbb, 0x23, 0xe9, 0x96, 0xeb, 0x2d, 0x51, 0xfd);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT putAllowOverride(int16 fOverride) mut => VT.putAllowOverride(ref this, fOverride);
			public HRESULT getAllowOverride(out int16 fOverride) mut => VT.getAllowOverride(ref this, out fOverride);
			public HRESULT reset() mut => VT.reset(ref this);
			public HRESULT pushContext() mut => VT.pushContext(ref this);
			public HRESULT pushNodeContext(ref IXMLDOMNode contextNode, int16 fDeep) mut => VT.pushNodeContext(ref this, ref contextNode, fDeep);
			public HRESULT popContext() mut => VT.popContext(ref this);
			public HRESULT declarePrefix(PWSTR prefix, PWSTR namespaceURI) mut => VT.declarePrefix(ref this, prefix, namespaceURI);
			public HRESULT getDeclaredPrefix(int32 nIndex, char16* pwchPrefix, out int32 pcchPrefix) mut => VT.getDeclaredPrefix(ref this, nIndex, pwchPrefix, out pcchPrefix);
			public HRESULT getPrefix(PWSTR pwszNamespaceURI, int32 nIndex, char16* pwchPrefix, out int32 pcchPrefix) mut => VT.getPrefix(ref this, pwszNamespaceURI, nIndex, pwchPrefix, out pcchPrefix);
			public HRESULT getURI(PWSTR pwchPrefix, ref IXMLDOMNode pContextNode, char16* pwchUri, out int32 pcchUri) mut => VT.getURI(ref this, pwchPrefix, ref pContextNode, pwchUri, out pcchUri);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, int16 fOverride) putAllowOverride;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, out int16 fOverride) getAllowOverride;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self) reset;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self) pushContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, ref IXMLDOMNode contextNode, int16 fDeep) pushNodeContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self) popContext;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, PWSTR prefix, PWSTR namespaceURI) declarePrefix;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, int32 nIndex, char16* pwchPrefix, out int32 pcchPrefix) getDeclaredPrefix;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, PWSTR pwszNamespaceURI, int32 nIndex, char16* pwchPrefix, out int32 pcchPrefix) getPrefix;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXNamespaceManager self, PWSTR pwchPrefix, ref IXMLDOMNode pContextNode, char16* pwchUri, out int32 pcchUri) getURI;
			}
		}
		[CRepr]
		public struct IMXXMLFilter : IDispatch
		{
			public const new Guid IID = .(0xc90352f7, 0x643c, 0x4fbc, 0xbb, 0x23, 0xe9, 0x96, 0xeb, 0x2d, 0x51, 0xfd);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT getFeature(BSTR strName, out int16 fValue) mut => VT.getFeature(ref this, strName, out fValue);
			public HRESULT putFeature(BSTR strName, int16 fValue) mut => VT.putFeature(ref this, strName, fValue);
			public HRESULT getProperty(BSTR strName, out VARIANT varValue) mut => VT.getProperty(ref this, strName, out varValue);
			public HRESULT putProperty(BSTR strName, VARIANT varValue) mut => VT.putProperty(ref this, strName, varValue);
			public HRESULT get_entityResolver(out IUnknown* oResolver) mut => VT.get_entityResolver(ref this, out oResolver);
			public HRESULT putref_entityResolver(ref IUnknown oResolver) mut => VT.putref_entityResolver(ref this, ref oResolver);
			public HRESULT get_contentHandler(out IUnknown* oHandler) mut => VT.get_contentHandler(ref this, out oHandler);
			public HRESULT putref_contentHandler(ref IUnknown oHandler) mut => VT.putref_contentHandler(ref this, ref oHandler);
			public HRESULT get_dtdHandler(out IUnknown* oHandler) mut => VT.get_dtdHandler(ref this, out oHandler);
			public HRESULT putref_dtdHandler(ref IUnknown oHandler) mut => VT.putref_dtdHandler(ref this, ref oHandler);
			public HRESULT get_errorHandler(out IUnknown* oHandler) mut => VT.get_errorHandler(ref this, out oHandler);
			public HRESULT putref_errorHandler(ref IUnknown oHandler) mut => VT.putref_errorHandler(ref this, ref oHandler);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, BSTR strName, out int16 fValue) getFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, BSTR strName, int16 fValue) putFeature;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, BSTR strName, out VARIANT varValue) getProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, BSTR strName, VARIANT varValue) putProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, out IUnknown* oResolver) get_entityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, ref IUnknown oResolver) putref_entityResolver;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, out IUnknown* oHandler) get_contentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, ref IUnknown oHandler) putref_contentHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, out IUnknown* oHandler) get_dtdHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, ref IUnknown oHandler) putref_dtdHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, out IUnknown* oHandler) get_errorHandler;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IMXXMLFilter self, ref IUnknown oHandler) putref_errorHandler;
			}
		}
		[CRepr]
		public struct IXMLDOMSchemaCollection2 : IXMLDOMSchemaCollection
		{
			public const new Guid IID = .(0x50ea08b0, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT validate() mut => VT.validate(ref this);
			public HRESULT put_validateOnLoad(int16 validateOnLoad) mut => VT.put_validateOnLoad(ref this, validateOnLoad);
			public HRESULT get_validateOnLoad(out int16 validateOnLoad) mut => VT.get_validateOnLoad(ref this, out validateOnLoad);
			public HRESULT getSchema(BSTR namespaceURI, out ISchema* schema) mut => VT.getSchema(ref this, namespaceURI, out schema);
			public HRESULT getDeclaration(ref IXMLDOMNode node, out ISchemaItem* item) mut => VT.getDeclaration(ref this, ref node, out item);

			[CRepr]
			public struct VTable : IXMLDOMSchemaCollection.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection2 self) validate;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection2 self, int16 validateOnLoad) put_validateOnLoad;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection2 self, out int16 validateOnLoad) get_validateOnLoad;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection2 self, BSTR namespaceURI, out ISchema* schema) getSchema;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLDOMSchemaCollection2 self, ref IXMLDOMNode node, out ISchemaItem* item) getDeclaration;
			}
		}
		[CRepr]
		public struct ISchemaStringCollection : IDispatch
		{
			public const new Guid IID = .(0x50ea08b1, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_item(int32 index, out BSTR bstr) mut => VT.get_item(ref this, index, out bstr);
			public HRESULT get_length(out int32 length) mut => VT.get_length(ref this, out length);
			public HRESULT get__newEnum(out IUnknown* ppunk) mut => VT.get__newEnum(ref this, out ppunk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaStringCollection self, int32 index, out BSTR bstr) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaStringCollection self, out int32 length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaStringCollection self, out IUnknown* ppunk) get__newEnum;
			}
		}
		[CRepr]
		public struct ISchemaItemCollection : IDispatch
		{
			public const new Guid IID = .(0x50ea08b2, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_item(int32 index, out ISchemaItem* item) mut => VT.get_item(ref this, index, out item);
			public HRESULT itemByName(BSTR name, out ISchemaItem* item) mut => VT.itemByName(ref this, name, out item);
			public HRESULT itemByQName(BSTR name, BSTR namespaceURI, out ISchemaItem* item) mut => VT.itemByQName(ref this, name, namespaceURI, out item);
			public HRESULT get_length(out int32 length) mut => VT.get_length(ref this, out length);
			public HRESULT get__newEnum(out IUnknown* ppunk) mut => VT.get__newEnum(ref this, out ppunk);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItemCollection self, int32 index, out ISchemaItem* item) get_item;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItemCollection self, BSTR name, out ISchemaItem* item) itemByName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItemCollection self, BSTR name, BSTR namespaceURI, out ISchemaItem* item) itemByQName;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItemCollection self, out int32 length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItemCollection self, out IUnknown* ppunk) get__newEnum;
			}
		}
		[CRepr]
		public struct ISchemaItem : IDispatch
		{
			public const new Guid IID = .(0x50ea08b3, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_name(out BSTR name) mut => VT.get_name(ref this, out name);
			public HRESULT get_namespaceURI(out BSTR namespaceURI) mut => VT.get_namespaceURI(ref this, out namespaceURI);
			public HRESULT get_schema(out ISchema* schema) mut => VT.get_schema(ref this, out schema);
			public HRESULT get_id(out BSTR id) mut => VT.get_id(ref this, out id);
			public HRESULT get_itemType(out SOMITEMTYPE itemType) mut => VT.get_itemType(ref this, out itemType);
			public HRESULT get_unhandledAttributes(out IVBSAXAttributes* attributes) mut => VT.get_unhandledAttributes(ref this, out attributes);
			public HRESULT writeAnnotation(ref IUnknown annotationSink, out int16 isWritten) mut => VT.writeAnnotation(ref this, ref annotationSink, out isWritten);

			[CRepr]
			public struct VTable : IDispatch.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out BSTR name) get_name;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out BSTR namespaceURI) get_namespaceURI;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out ISchema* schema) get_schema;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out BSTR id) get_id;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out SOMITEMTYPE itemType) get_itemType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, out IVBSAXAttributes* attributes) get_unhandledAttributes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaItem self, ref IUnknown annotationSink, out int16 isWritten) writeAnnotation;
			}
		}
		[CRepr]
		public struct ISchema : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08b4, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_targetNamespace(out BSTR targetNamespace) mut => VT.get_targetNamespace(ref this, out targetNamespace);
			public HRESULT get_version(out BSTR version) mut => VT.get_version(ref this, out version);
			public HRESULT get_types(out ISchemaItemCollection* types) mut => VT.get_types(ref this, out types);
			public HRESULT get_elements(out ISchemaItemCollection* elements) mut => VT.get_elements(ref this, out elements);
			public HRESULT get_attributes(out ISchemaItemCollection* attributes) mut => VT.get_attributes(ref this, out attributes);
			public HRESULT get_attributeGroups(out ISchemaItemCollection* attributeGroups) mut => VT.get_attributeGroups(ref this, out attributeGroups);
			public HRESULT get_modelGroups(out ISchemaItemCollection* modelGroups) mut => VT.get_modelGroups(ref this, out modelGroups);
			public HRESULT get_notations(out ISchemaItemCollection* notations) mut => VT.get_notations(ref this, out notations);
			public HRESULT get_schemaLocations(out ISchemaStringCollection* schemaLocations) mut => VT.get_schemaLocations(ref this, out schemaLocations);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out BSTR targetNamespace) get_targetNamespace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out BSTR version) get_version;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* types) get_types;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* elements) get_elements;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* attributes) get_attributes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* attributeGroups) get_attributeGroups;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* modelGroups) get_modelGroups;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaItemCollection* notations) get_notations;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchema self, out ISchemaStringCollection* schemaLocations) get_schemaLocations;
			}
		}
		[CRepr]
		public struct ISchemaParticle : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08b5, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_minOccurs(out VARIANT minOccurs) mut => VT.get_minOccurs(ref this, out minOccurs);
			public HRESULT get_maxOccurs(out VARIANT maxOccurs) mut => VT.get_maxOccurs(ref this, out maxOccurs);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaParticle self, out VARIANT minOccurs) get_minOccurs;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaParticle self, out VARIANT maxOccurs) get_maxOccurs;
			}
		}
		[CRepr]
		public struct ISchemaAttribute : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08b6, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_type(out ISchemaType* type) mut => VT.get_type(ref this, out type);
			public HRESULT get_scope(out ISchemaComplexType* @scope) mut => VT.get_scope(ref this, out @scope);
			public HRESULT get_defaultValue(out BSTR defaultValue) mut => VT.get_defaultValue(ref this, out defaultValue);
			public HRESULT get_fixedValue(out BSTR fixedValue) mut => VT.get_fixedValue(ref this, out fixedValue);
			public HRESULT get_use(out SCHEMAUSE use) mut => VT.get_use(ref this, out use);
			public HRESULT get_isReference(out int16 reference) mut => VT.get_isReference(ref this, out reference);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out ISchemaType* type) get_type;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out ISchemaComplexType* @scope) get_scope;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out BSTR defaultValue) get_defaultValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out BSTR fixedValue) get_fixedValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out SCHEMAUSE use) get_use;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttribute self, out int16 reference) get_isReference;
			}
		}
		[CRepr]
		public struct ISchemaElement : ISchemaParticle
		{
			public const new Guid IID = .(0x50ea08b7, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_type(out ISchemaType* type) mut => VT.get_type(ref this, out type);
			public HRESULT get_scope(out ISchemaComplexType* @scope) mut => VT.get_scope(ref this, out @scope);
			public HRESULT get_defaultValue(out BSTR defaultValue) mut => VT.get_defaultValue(ref this, out defaultValue);
			public HRESULT get_fixedValue(out BSTR fixedValue) mut => VT.get_fixedValue(ref this, out fixedValue);
			public HRESULT get_isNillable(out int16 nillable) mut => VT.get_isNillable(ref this, out nillable);
			public HRESULT get_identityConstraints(out ISchemaItemCollection* constraints) mut => VT.get_identityConstraints(ref this, out constraints);
			public HRESULT get_substitutionGroup(out ISchemaElement* element) mut => VT.get_substitutionGroup(ref this, out element);
			public HRESULT get_substitutionGroupExclusions(out SCHEMADERIVATIONMETHOD exclusions) mut => VT.get_substitutionGroupExclusions(ref this, out exclusions);
			public HRESULT get_disallowedSubstitutions(out SCHEMADERIVATIONMETHOD disallowed) mut => VT.get_disallowedSubstitutions(ref this, out disallowed);
			public HRESULT get_isAbstract(out int16 @abstract) mut => VT.get_isAbstract(ref this, out @abstract);
			public HRESULT get_isReference(out int16 reference) mut => VT.get_isReference(ref this, out reference);

			[CRepr]
			public struct VTable : ISchemaParticle.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out ISchemaType* type) get_type;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out ISchemaComplexType* @scope) get_scope;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out BSTR defaultValue) get_defaultValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out BSTR fixedValue) get_fixedValue;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out int16 nillable) get_isNillable;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out ISchemaItemCollection* constraints) get_identityConstraints;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out ISchemaElement* element) get_substitutionGroup;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out SCHEMADERIVATIONMETHOD exclusions) get_substitutionGroupExclusions;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out SCHEMADERIVATIONMETHOD disallowed) get_disallowedSubstitutions;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out int16 @abstract) get_isAbstract;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaElement self, out int16 reference) get_isReference;
			}
		}
		[CRepr]
		public struct ISchemaType : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08b8, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_baseTypes(out ISchemaItemCollection* baseTypes) mut => VT.get_baseTypes(ref this, out baseTypes);
			public HRESULT get_final(out SCHEMADERIVATIONMETHOD final) mut => VT.get_final(ref this, out final);
			public HRESULT get_variety(out SCHEMATYPEVARIETY variety) mut => VT.get_variety(ref this, out variety);
			public HRESULT get_derivedBy(out SCHEMADERIVATIONMETHOD derivedBy) mut => VT.get_derivedBy(ref this, out derivedBy);
			public HRESULT isValid(BSTR data, out int16 valid) mut => VT.isValid(ref this, data, out valid);
			public HRESULT get_minExclusive(out BSTR minExclusive) mut => VT.get_minExclusive(ref this, out minExclusive);
			public HRESULT get_minInclusive(out BSTR minInclusive) mut => VT.get_minInclusive(ref this, out minInclusive);
			public HRESULT get_maxExclusive(out BSTR maxExclusive) mut => VT.get_maxExclusive(ref this, out maxExclusive);
			public HRESULT get_maxInclusive(out BSTR maxInclusive) mut => VT.get_maxInclusive(ref this, out maxInclusive);
			public HRESULT get_totalDigits(out VARIANT totalDigits) mut => VT.get_totalDigits(ref this, out totalDigits);
			public HRESULT get_fractionDigits(out VARIANT fractionDigits) mut => VT.get_fractionDigits(ref this, out fractionDigits);
			public HRESULT get_length(out VARIANT length) mut => VT.get_length(ref this, out length);
			public HRESULT get_minLength(out VARIANT minLength) mut => VT.get_minLength(ref this, out minLength);
			public HRESULT get_maxLength(out VARIANT maxLength) mut => VT.get_maxLength(ref this, out maxLength);
			public HRESULT get_enumeration(out ISchemaStringCollection* enumeration) mut => VT.get_enumeration(ref this, out enumeration);
			public HRESULT get_whitespace(out SCHEMAWHITESPACE whitespace) mut => VT.get_whitespace(ref this, out whitespace);
			public HRESULT get_patterns(out ISchemaStringCollection* patterns) mut => VT.get_patterns(ref this, out patterns);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out ISchemaItemCollection* baseTypes) get_baseTypes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out SCHEMADERIVATIONMETHOD final) get_final;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out SCHEMATYPEVARIETY variety) get_variety;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out SCHEMADERIVATIONMETHOD derivedBy) get_derivedBy;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, BSTR data, out int16 valid) isValid;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out BSTR minExclusive) get_minExclusive;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out BSTR minInclusive) get_minInclusive;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out BSTR maxExclusive) get_maxExclusive;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out BSTR maxInclusive) get_maxInclusive;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out VARIANT totalDigits) get_totalDigits;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out VARIANT fractionDigits) get_fractionDigits;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out VARIANT length) get_length;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out VARIANT minLength) get_minLength;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out VARIANT maxLength) get_maxLength;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out ISchemaStringCollection* enumeration) get_enumeration;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out SCHEMAWHITESPACE whitespace) get_whitespace;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaType self, out ISchemaStringCollection* patterns) get_patterns;
			}
		}
		[CRepr]
		public struct ISchemaComplexType : ISchemaType
		{
			public const new Guid IID = .(0x50ea08b9, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_isAbstract(out int16 @abstract) mut => VT.get_isAbstract(ref this, out @abstract);
			public HRESULT get_anyAttribute(out ISchemaAny* anyAttribute) mut => VT.get_anyAttribute(ref this, out anyAttribute);
			public HRESULT get_attributes(out ISchemaItemCollection* attributes) mut => VT.get_attributes(ref this, out attributes);
			public HRESULT get_contentType(out SCHEMACONTENTTYPE contentType) mut => VT.get_contentType(ref this, out contentType);
			public HRESULT get_contentModel(out ISchemaModelGroup* contentModel) mut => VT.get_contentModel(ref this, out contentModel);
			public HRESULT get_prohibitedSubstitutions(out SCHEMADERIVATIONMETHOD prohibited) mut => VT.get_prohibitedSubstitutions(ref this, out prohibited);

			[CRepr]
			public struct VTable : ISchemaType.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out int16 @abstract) get_isAbstract;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out ISchemaAny* anyAttribute) get_anyAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out ISchemaItemCollection* attributes) get_attributes;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out SCHEMACONTENTTYPE contentType) get_contentType;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out ISchemaModelGroup* contentModel) get_contentModel;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaComplexType self, out SCHEMADERIVATIONMETHOD prohibited) get_prohibitedSubstitutions;
			}
		}
		[CRepr]
		public struct ISchemaAttributeGroup : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08ba, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_anyAttribute(out ISchemaAny* anyAttribute) mut => VT.get_anyAttribute(ref this, out anyAttribute);
			public HRESULT get_attributes(out ISchemaItemCollection* attributes) mut => VT.get_attributes(ref this, out attributes);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttributeGroup self, out ISchemaAny* anyAttribute) get_anyAttribute;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAttributeGroup self, out ISchemaItemCollection* attributes) get_attributes;
			}
		}
		[CRepr]
		public struct ISchemaModelGroup : ISchemaParticle
		{
			public const new Guid IID = .(0x50ea08bb, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_particles(out ISchemaItemCollection* particles) mut => VT.get_particles(ref this, out particles);

			[CRepr]
			public struct VTable : ISchemaParticle.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaModelGroup self, out ISchemaItemCollection* particles) get_particles;
			}
		}
		[CRepr]
		public struct ISchemaAny : ISchemaParticle
		{
			public const new Guid IID = .(0x50ea08bc, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_namespaces(out ISchemaStringCollection* namespaces) mut => VT.get_namespaces(ref this, out namespaces);
			public HRESULT get_processContents(out SCHEMAPROCESSCONTENTS processContents) mut => VT.get_processContents(ref this, out processContents);

			[CRepr]
			public struct VTable : ISchemaParticle.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAny self, out ISchemaStringCollection* namespaces) get_namespaces;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaAny self, out SCHEMAPROCESSCONTENTS processContents) get_processContents;
			}
		}
		[CRepr]
		public struct ISchemaIdentityConstraint : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08bd, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_selector(out BSTR selector) mut => VT.get_selector(ref this, out selector);
			public HRESULT get_fields(out ISchemaStringCollection* fields) mut => VT.get_fields(ref this, out fields);
			public HRESULT get_referencedKey(out ISchemaIdentityConstraint* key) mut => VT.get_referencedKey(ref this, out key);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaIdentityConstraint self, out BSTR selector) get_selector;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaIdentityConstraint self, out ISchemaStringCollection* fields) get_fields;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaIdentityConstraint self, out ISchemaIdentityConstraint* key) get_referencedKey;
			}
		}
		[CRepr]
		public struct ISchemaNotation : ISchemaItem
		{
			public const new Guid IID = .(0x50ea08be, 0xdd1b, 0x4664, 0x9a, 0x50, 0xc2, 0xf4, 0x0f, 0x4b, 0xd7, 0x9a);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT get_systemIdentifier(out BSTR uri) mut => VT.get_systemIdentifier(ref this, out uri);
			public HRESULT get_publicIdentifier(out BSTR uri) mut => VT.get_publicIdentifier(ref this, out uri);

			[CRepr]
			public struct VTable : ISchemaItem.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaNotation self, out BSTR uri) get_systemIdentifier;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref ISchemaNotation self, out BSTR uri) get_publicIdentifier;
			}
		}
		[CRepr]
		public struct IXMLHTTPRequest2Callback : IUnknown
		{
			public const new Guid IID = .(0xa44a9299, 0xe321, 0x40de, 0x88, 0x66, 0x34, 0x1b, 0x41, 0x66, 0x91, 0x62);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT OnRedirect(ref IXMLHTTPRequest2 pXHR, PWSTR pwszRedirectUrl) mut => VT.OnRedirect(ref this, ref pXHR, pwszRedirectUrl);
			public HRESULT OnHeadersAvailable(ref IXMLHTTPRequest2 pXHR, uint32 dwStatus, PWSTR pwszStatus) mut => VT.OnHeadersAvailable(ref this, ref pXHR, dwStatus, pwszStatus);
			public HRESULT OnDataAvailable(ref IXMLHTTPRequest2 pXHR, ref ISequentialStream pResponseStream) mut => VT.OnDataAvailable(ref this, ref pXHR, ref pResponseStream);
			public HRESULT OnResponseReceived(ref IXMLHTTPRequest2 pXHR, ref ISequentialStream pResponseStream) mut => VT.OnResponseReceived(ref this, ref pXHR, ref pResponseStream);
			public HRESULT OnError(ref IXMLHTTPRequest2 pXHR, HRESULT hrError) mut => VT.OnError(ref this, ref pXHR, hrError);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2Callback self, ref IXMLHTTPRequest2 pXHR, PWSTR pwszRedirectUrl) OnRedirect;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2Callback self, ref IXMLHTTPRequest2 pXHR, uint32 dwStatus, PWSTR pwszStatus) OnHeadersAvailable;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2Callback self, ref IXMLHTTPRequest2 pXHR, ref ISequentialStream pResponseStream) OnDataAvailable;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2Callback self, ref IXMLHTTPRequest2 pXHR, ref ISequentialStream pResponseStream) OnResponseReceived;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2Callback self, ref IXMLHTTPRequest2 pXHR, HRESULT hrError) OnError;
			}
		}
		[CRepr]
		public struct IXMLHTTPRequest2 : IUnknown
		{
			public const new Guid IID = .(0xe5d37dc0, 0x552a, 0x4d52, 0x9c, 0xc0, 0xa1, 0x4d, 0x54, 0x6f, 0xbd, 0x04);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT Open(PWSTR pwszMethod, PWSTR pwszUrl, ref IXMLHTTPRequest2Callback pStatusCallback, PWSTR pwszUserName, PWSTR pwszPassword, PWSTR pwszProxyUserName, PWSTR pwszProxyPassword) mut => VT.Open(ref this, pwszMethod, pwszUrl, ref pStatusCallback, pwszUserName, pwszPassword, pwszProxyUserName, pwszProxyPassword);
			public HRESULT Send(ref ISequentialStream pBody, uint64 cbBody) mut => VT.Send(ref this, ref pBody, cbBody);
			public HRESULT Abort() mut => VT.Abort(ref this);
			public HRESULT SetCookie(in XHR_COOKIE pCookie, out uint32 pdwCookieState) mut => VT.SetCookie(ref this, pCookie, out pdwCookieState);
			public HRESULT SetCustomResponseStream(ref ISequentialStream pSequentialStream) mut => VT.SetCustomResponseStream(ref this, ref pSequentialStream);
			public HRESULT SetProperty(XHR_PROPERTY eProperty, uint64 ullValue) mut => VT.SetProperty(ref this, eProperty, ullValue);
			public HRESULT SetRequestHeader(PWSTR pwszHeader, PWSTR pwszValue) mut => VT.SetRequestHeader(ref this, pwszHeader, pwszValue);
			public HRESULT GetAllResponseHeaders(out uint16* ppwszHeaders) mut => VT.GetAllResponseHeaders(ref this, out ppwszHeaders);
			public HRESULT GetCookie(PWSTR pwszUrl, PWSTR pwszName, uint32 dwFlags, out uint32 pcCookies, XHR_COOKIE** ppCookies) mut => VT.GetCookie(ref this, pwszUrl, pwszName, dwFlags, out pcCookies, ppCookies);
			public HRESULT GetResponseHeader(PWSTR pwszHeader, out uint16* ppwszValue) mut => VT.GetResponseHeader(ref this, pwszHeader, out ppwszValue);

			[CRepr]
			public struct VTable : IUnknown.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, PWSTR pwszMethod, PWSTR pwszUrl, ref IXMLHTTPRequest2Callback pStatusCallback, PWSTR pwszUserName, PWSTR pwszPassword, PWSTR pwszProxyUserName, PWSTR pwszProxyPassword) Open;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, ref ISequentialStream pBody, uint64 cbBody) Send;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self) Abort;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, in XHR_COOKIE pCookie, out uint32 pdwCookieState) SetCookie;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, ref ISequentialStream pSequentialStream) SetCustomResponseStream;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, XHR_PROPERTY eProperty, uint64 ullValue) SetProperty;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, PWSTR pwszHeader, PWSTR pwszValue) SetRequestHeader;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, out uint16* ppwszHeaders) GetAllResponseHeaders;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, PWSTR pwszUrl, PWSTR pwszName, uint32 dwFlags, out uint32 pcCookies, XHR_COOKIE** ppCookies) GetCookie;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest2 self, PWSTR pwszHeader, out uint16* ppwszValue) GetResponseHeader;
			}
		}
		[CRepr]
		public struct IXMLHTTPRequest3Callback : IXMLHTTPRequest2Callback
		{
			public const new Guid IID = .(0xb9e57830, 0x8c6c, 0x4a6f, 0x9c, 0x13, 0x47, 0x77, 0x2b, 0xb0, 0x47, 0xbb);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT OnServerCertificateReceived(ref IXMLHTTPRequest3 pXHR, uint32 dwCertificateErrors, uint32 cServerCertificateChain, XHR_CERT* rgServerCertificateChain) mut => VT.OnServerCertificateReceived(ref this, ref pXHR, dwCertificateErrors, cServerCertificateChain, rgServerCertificateChain);
			public HRESULT OnClientCertificateRequested(ref IXMLHTTPRequest3 pXHR, uint32 cIssuerList, uint16** rgpwszIssuerList) mut => VT.OnClientCertificateRequested(ref this, ref pXHR, cIssuerList, rgpwszIssuerList);

			[CRepr]
			public struct VTable : IXMLHTTPRequest2Callback.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest3Callback self, ref IXMLHTTPRequest3 pXHR, uint32 dwCertificateErrors, uint32 cServerCertificateChain, XHR_CERT* rgServerCertificateChain) OnServerCertificateReceived;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest3Callback self, ref IXMLHTTPRequest3 pXHR, uint32 cIssuerList, uint16** rgpwszIssuerList) OnClientCertificateRequested;
			}
		}
		[CRepr]
		public struct IXMLHTTPRequest3 : IXMLHTTPRequest2
		{
			public const new Guid IID = .(0xa1c9feee, 0x0617, 0x4f23, 0x9d, 0x58, 0x89, 0x61, 0xea, 0x43, 0x56, 0x7c);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT SetClientCertificate(uint32 cbClientCertificateHash, uint8* pbClientCertificateHash, PWSTR pwszPin) mut => VT.SetClientCertificate(ref this, cbClientCertificateHash, pbClientCertificateHash, pwszPin);

			[CRepr]
			public struct VTable : IXMLHTTPRequest2.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IXMLHTTPRequest3 self, uint32 cbClientCertificateHash, uint8* pbClientCertificateHash, PWSTR pwszPin) SetClientCertificate;
			}
		}
		
	}
}
