File: Windows.Win32.IUIAutomationElement.g.cs
Project: src\src\System.Windows.Forms.Primitives\src\System.Windows.Forms.Primitives.csproj (System.Windows.Forms.Primitives)
// ------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------

#pragma warning disable CS1591,CS1573,CS0465,CS0649,CS8019,CS1570,CS1584,CS1658,CS0436,CS8981
using global::System;
using global::System.Diagnostics;
using global::System.Diagnostics.CodeAnalysis;
using global::System.Runtime.CompilerServices;
using global::System.Runtime.InteropServices;
using global::System.Runtime.Versioning;
using winmdroot = global::Windows.Win32;
namespace Windows.Win32
{
	namespace UI.Accessibility
	{
		[Guid("D22108AA-8AC5-49A5-837B-37BBB3D7591E")]
		[SupportedOSPlatform("windows6.1")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IUIAutomationElement
			:IVTable<IUIAutomationElement,IUIAutomationElement.Vtbl>,IComIID		{
			/// <inheritdoc cref="QueryInterface(global::System.Guid*, void**)"/>
			internal unsafe winmdroot.Foundation.HRESULT QueryInterface(in global::System.Guid riid, out void* ppvObject)
			{
				fixed (void** ppvObjectLocal = &ppvObject)
				{
					fixed (global::System.Guid* riidLocal = &riid)
					{
						winmdroot.Foundation.HRESULT __result = this.QueryInterface(riidLocal, ppvObjectLocal);
						return __result;
					}
				}
			}

			public unsafe winmdroot.Foundation.HRESULT QueryInterface(global::System.Guid* riid, void** ppvObject)
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IUIAutomationElement*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

			public uint AddRef()
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,uint>)lpVtbl[1])((IUIAutomationElement*)Unsafe.AsPointer(ref this));
			}

			public uint Release()
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,uint>)lpVtbl[2])((IUIAutomationElement*)Unsafe.AsPointer(ref this));
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFocus(IUIAutomationElement* pThis)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFocus();
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Sets the keyboard focus to this UI Automation element.</summary>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-setfocus">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.Foundation.HRESULT SetFocus()
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IUIAutomationElement*)Unsafe.AsPointer(ref this));
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetRuntimeId(IUIAutomationElement* pThis, winmdroot.System.Com.SAFEARRAY** runtimeId)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetRuntimeId(runtimeId);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the unique identifier assigned to the UI element.</summary>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The identifier is only guaranteed to be unique to the UI of the desktop on which it was generated. Identifiers can be reused over time. The format of run-time identifiers might change in the future. The returned identifier should be treated as an opaque value and used only for comparison; for example, to determine whether a Microsoft UI Automation element is in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getruntimeid#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.System.Com.SAFEARRAY* GetRuntimeId()
			{
				winmdroot.System.Com.SAFEARRAY* __retVal = default(winmdroot.System.Com.SAFEARRAY*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT FindFirst(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationElement** found)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.FindFirst(scope, condition, found);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the first child or descendant element that matches the specified condition.</summary>
			/// <param name="condition">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to a condition that represents the criteria to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirst#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The scope of the search is relative to the element on which the method is called. Elements are returned in the order in which they were encountered in the tree. This function cannot search for ancestor elements in the Microsoft UI Automation tree; that is, <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Ancestors</a>  is not a valid value for the <i>scope</i> parameter. When searching for top-level windows on the desktop, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the <i>scope</i> parameter, not <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Descendants</a>. A search through the entire subtree of the desktop could iterate through thousands of items and lead to a stack overflow. If your client application might try to find elements in its own user interface, you must make all UI Automation calls on a separate thread. This function ignores elements in the raw tree. Call <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirstbuildcache">FindFirstBuildCache</a> to search the raw tree by specifying the appropriate <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope</a> on the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a> passed to that function.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirst#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* FindFirst(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IUIAutomationElement*)Unsafe.AsPointer(ref this), scope, condition, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT FindAll(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationElementArray** found)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.FindAll(scope, condition, found);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Returns all UI Automation elements that satisfy the specified condition.</summary>
			/// <param name="condition">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to a condition that represents the criteria to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findall#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The scope of the search is relative to the element on which the method is called. Elements are returned in the order in which they are encountered in the tree. This function cannot search for ancestor elements in the Microsoft UI Automation tree; that is, <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Ancestors</a>  is not a valid value for the <i>scope</i> parameter. When searching for top-level windows on the desktop, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the <i>scope</i> parameter, not <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Descendants</a>. A search through the entire subtree of the desktop could iterate through thousands of items and lead to a stack overflow. If your client application might try to find elements in its own user interface, you must make all UI Automation calls on a separate thread.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findall#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* FindAll(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition)
			{
				winmdroot.UI.Accessibility.IUIAutomationElementArray* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElementArray*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IUIAutomationElement*)Unsafe.AsPointer(ref this), scope, condition, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT FindFirstBuildCache(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** found)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.FindFirstBuildCache(scope, condition, cacheRequest, found);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the first child or descendant element that matches the specified condition, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</summary>
			/// <param name="condition">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to a condition that represents the criteria to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirstbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the control patterns and properties to include in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirstbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The scope of the search is relative to the element on which the method is called. Elements are returned in the order in which they were encountered in the tree. This function cannot search for ancestor elements in the Microsoft UI Automation tree; that is, <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Ancestors</a>  is not a valid value for the <i>scope</i> parameter. When searching for top-level windows on the desktop, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the <i>scope</i> parameter, not <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Descendants</a>. A search through the entire subtree of the desktop could iterate through thousands of items and lead to a stack overflow. If your client application might try to find elements in its own user interface, you must make all UI Automation calls on a separate thread. To search the raw tree, specify the appropriate <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope</a> in the <i>cacheRequest</i> parameter.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirstbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* FindFirstBuildCache(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IUIAutomationElement*)Unsafe.AsPointer(ref this), scope, condition, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT FindAllBuildCache(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElementArray** found)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.FindAllBuildCache(scope, condition, cacheRequest, found);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Returns all UI Automation elements that satisfy the specified condition, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</summary>
			/// <param name="condition">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to a condition that represents the criteria to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findallbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the control patterns and properties to include in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findallbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The scope of the search is relative to the element on which the method is called. Elements are returned in the order in which they were encountered in the tree. This function cannot search for ancestor elements in the Microsoft UI Automation tree; that is, <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Ancestors</a>  is not a valid value for the <i>scope</i> parameter. When searching for top-level windows on the desktop, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the <i>scope</i> parameter, not <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Descendants</a>. A search through the entire subtree of the desktop could iterate through thousands of items and lead to a stack overflow. If your client application might try to find elements in its own user interface, you must make all UI Automation calls on a separate thread.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findallbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* FindAllBuildCache(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElementArray* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElementArray*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IUIAutomationElement*)Unsafe.AsPointer(ref this), scope, condition, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT BuildUpdatedCache(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** updatedElement)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.BuildUpdatedCache(cacheRequest, updatedElement);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a new UI Automation element with an updated cache.</summary>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the control patterns and properties to include in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-buildupdatedcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>The original UI Automation element is unchanged. The new <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a> interface refers to the same element and has the same runtime identifier.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* BuildUpdatedCache(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IUIAutomationElement*)Unsafe.AsPointer(ref this), cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentPropertyValue(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCurrentPropertyValue(propertyId, retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the current value of a property for this UI Automation element.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The identifier of the property. For a list of property IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-entry-propids">Property Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalue#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>Microsoft UI Automation properties of the <b>double</b> type support Not a Number (NaN) values. When retrieving a property of the <b>double</b> type, a client can use the <a href="https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-6.0/aa298428(v=vs.60)">_isnan</a> function to determine whether the property is a NaN value.</remarks>
			public winmdroot.System.Variant.VARIANT GetCurrentPropertyValue(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId)
			{
				winmdroot.System.Variant.VARIANT __retVal = default(winmdroot.System.Variant.VARIANT);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IUIAutomationElement*)Unsafe.AsPointer(ref this), propertyId, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentPropertyValueEx(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue, winmdroot.System.Variant.VARIANT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCurrentPropertyValueEx(propertyId, ignoreDefaultValue, retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a property value for this UI Automation element, optionally ignoring any default value.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The identifier of the property. For a list of property IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-entry-propids">Property Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalueex#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="ignoreDefaultValue">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">BOOL</a></b> A value that specifies whether a default value should be ignored if the specified property is not supported: <b>TRUE</b> if the default value is not to be returned, or <b>FALSE</b> if it is to be returned.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalueex#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>Passing <b>FALSE</b> in the <i>ignoreDefaultValue</i> parameter is equivalent to calling <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalue">IUIAutomationElement::GetCurrentPropertyValue</a>. If the Microsoft UI Automation provider for the element itself supports the property, the value of the property is returned. Otherwise, if <i>ignoreDefaultValue</i> is <b>FALSE</b>, a default value specified by UI Automation is returned. This method returns a failure code if the requested property was not previously cached. UI Automation properties of the <b>double</b> type support Not a Number (NaN) values. When retrieving a property of the <b>double</b> type, a client can use the <a href="https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-6.0/aa298428(v=vs.60)">_isnan</a> function to determine whether the property is a NaN value.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalueex#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.System.Variant.VARIANT GetCurrentPropertyValueEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue)
			{
				winmdroot.System.Variant.VARIANT __retVal = default(winmdroot.System.Variant.VARIANT);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BOOL ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IUIAutomationElement*)Unsafe.AsPointer(ref this), propertyId, ignoreDefaultValue, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedPropertyValue(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedPropertyValue(propertyId, retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a property value from the cache for this UI Automation element.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The identifier of the property.  For a list of property IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-entry-propids">Property Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpropertyvalue#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>Microsoft UI Automation properties of the <b>double</b> type support Not a Number (NaN) values. When retrieving a property of the <b>double</b> type, a client can use the <a href="https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-6.0/aa298428(v=vs.60)">_isnan</a> function to determine whether the property is a NaN value.</remarks>
			public winmdroot.System.Variant.VARIANT GetCachedPropertyValue(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId)
			{
				winmdroot.System.Variant.VARIANT __retVal = default(winmdroot.System.Variant.VARIANT);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IUIAutomationElement*)Unsafe.AsPointer(ref this), propertyId, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedPropertyValueEx(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue, winmdroot.System.Variant.VARIANT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedPropertyValueEx(propertyId, ignoreDefaultValue, retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a property value from the cache for this UI Automation element, optionally ignoring any default value.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The identifier of the property. For a list of property IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-entry-propids">Property Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpropertyvalueex#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="ignoreDefaultValue">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">BOOL</a></b> A value that specifies whether a default value should be ignored if the specified property is not supported: <b>TRUE</b> if the default value is not to be returned, or <b>FALSE</b> if it is to be returned.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpropertyvalueex#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>This method retrieves the specified property from the cache for the UI Automation element. To retrieve the current property, call <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalueex">IUIAutomationElement::GetCurrentPropertyValueEx</a>. Passing <b>FALSE</b> in the <i>ignoreDefaultValue</i> parameter is equivalent to calling <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpropertyvalue">IUIAutomationElement::GetCachedPropertyValue</a>. If the Microsoft UI Automation provider for the element itself supports the property, the value of the property is returned. Otherwise, if <i>ignoreDefaultValue</i> is <b>FALSE</b>, a default value specified by UI Automation is returned. This method returns a failure code  if the requested property was not previously cached. UI Automation properties of the <b>double</b> type support Not a Number (NaN) values. When retrieving a property of the <b>double</b> type, a client can use the <a href="https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-6.0/aa298428(v=vs.60)">_isnan</a> function to determine whether the property is a NaN value.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpropertyvalueex#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.System.Variant.VARIANT GetCachedPropertyValueEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue)
			{
				winmdroot.System.Variant.VARIANT __retVal = default(winmdroot.System.Variant.VARIANT);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BOOL ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IUIAutomationElement*)Unsafe.AsPointer(ref this), propertyId, ignoreDefaultValue, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			/// <inheritdoc cref="GetCurrentPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID, global::System.Guid*)"/>
			internal unsafe void* GetCurrentPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, in global::System.Guid riid)
			{
				fixed (global::System.Guid* riidLocal = &riid)
				{
					void* __result = this.GetCurrentPatternAs(patternId, riidLocal);
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentPatternAs(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid, void** patternObject)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCurrentPatternAs(patternId, riid, patternObject);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the control pattern interface of the specified pattern on this UI Automation element.</summary>
			/// <param name="patternId">
			/// <para>Type: <b>PATTERNID</b> The identifier of the control pattern. For a list of control pattern IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-controlpattern-ids">Control Pattern Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpatternas#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="riid">
			/// <para>Type: <b>REFIID</b> A reference to the IID of the interface to retrieve through <i>ppv</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpatternas#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>It is recommended that you use the <b>IID_PPV_ARGS</b> macro, defined in Objbase.h, to package the <i>riid</i> and <i>ppv</i> parameters. This macro provides the correct IID based on the interface pointed to by the value in <i>ppv</i>, which eliminates the possibility of a coding error.</remarks>
			public unsafe void* GetCurrentPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid)
			{
				void* __retVal = default(void*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IUIAutomationElement*)Unsafe.AsPointer(ref this), patternId, riid, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			/// <inheritdoc cref="GetCachedPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID, global::System.Guid*)"/>
			internal unsafe void* GetCachedPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, in global::System.Guid riid)
			{
				fixed (global::System.Guid* riidLocal = &riid)
				{
					void* __result = this.GetCachedPatternAs(patternId, riidLocal);
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedPatternAs(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid, void** patternObject)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedPatternAs(patternId, riid, patternObject);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the control pattern interface of the specified pattern from the cache of this UI Automation element.</summary>
			/// <param name="patternId">
			/// <para>Type: <b>PATTERNID</b> The identifier of the control pattern. For a list of control pattern IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-controlpattern-ids">Control Pattern Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpatternas#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="riid">
			/// <para>Type: <b>REFIID</b> A reference to the IID of the interface to retrieve through <i>ppv</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpatternas#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>It is recommended that you use the <b>IID_PPV_ARGS</b> macro, defined in Objbase.h, to package the <i>riid</i> and <i>ppv</i> parameters. This macro provides the correct IID based on the interface pointed to by the value in <i>ppv</i>, which eliminates the possibility of a coding error.</remarks>
			public unsafe void* GetCachedPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid)
			{
				void* __retVal = default(void*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IUIAutomationElement*)Unsafe.AsPointer(ref this), patternId, riid, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentPattern(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, winmdroot.System.Com.IUnknown** patternObject)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCurrentPattern(patternId, patternObject);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the IUnknown interface of the specified control pattern on this UI Automation element.</summary>
			/// <param name="patternId">
			/// <para>Type: <b>PATTERNID</b> The identifier of the control pattern. For a list of control pattern IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-controlpattern-ids">Control Pattern Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpattern#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>This method gets the specified control pattern based on its availability at the time of the call. For some forms of UI, this method will incur cross-process performance overhead. Applications can reduce overhead by caching control patterns and then retrieving them by using <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpattern">IUIAutomationElement::GetCachedPattern</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpattern#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.System.Com.IUnknown* GetCurrentPattern(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId)
			{
				winmdroot.System.Com.IUnknown* __retVal = default(winmdroot.System.Com.IUnknown*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT>)lpVtbl[16])((IUIAutomationElement*)Unsafe.AsPointer(ref this), patternId, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedPattern(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, winmdroot.System.Com.IUnknown** patternObject)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedPattern(patternId, patternObject);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves from the cache the IUnknown interface of the specified control pattern of this UI Automation element.</summary>
			/// <param name="patternId">
			/// <para>Type: <b>PATTERNID</b> The identifier of the control pattern. For a list of control pattern IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-controlpattern-ids">Control Pattern Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpattern#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedpattern">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.System.Com.IUnknown* GetCachedPattern(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId)
			{
				winmdroot.System.Com.IUnknown* __retVal = default(winmdroot.System.Com.IUnknown*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT>)lpVtbl[17])((IUIAutomationElement*)Unsafe.AsPointer(ref this), patternId, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedParent(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElement** parent)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedParent(parent);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves from the cache the parent of this UI Automation element.</summary>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedparent">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetCachedParent()
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[18])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCachedChildren(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** children)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCachedChildren(children);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached child elements of this UI Automation element.</summary>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>The view of the returned collection is determined by the TreeFilter property of the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a> that was active when this element was obtained. Children are cached only if the scope of the cache request included <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Subtree</a>, <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a>, or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Descendants</a>. If the cache request specified that children were to be cached at this level, but there are no children, the value of this property is 0. However, if no request was made to cache children at this level, an attempt to retrieve the property returns an error.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcachedchildren#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* GetCachedChildren()
			{
				winmdroot.UI.Accessibility.IUIAutomationElementArray* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElementArray*);
				((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[19])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentProcessId(IUIAutomationElement* pThis, int* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentProcessId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the identifier of the process that hosts the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentprocessid">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal int CurrentProcessId
			{
				get
				{
					int __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[20])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentControlType(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentControlType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the control type of the element.</summary>
			/// <remarks>
			/// <para>Control types describe a known interaction model for UI Automation elements without relying on a localized control type or combination of complex logic rules. This property cannot change at run time unless the control supports the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationmultipleviewpattern">IUIAutomationMultipleViewPattern</a> interface. An example is the Win32 ListView control, which can change from a data grid to a list, depending on the current view.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentcontroltype#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID CurrentControlType
			{
				get
				{
					winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* ,winmdroot.Foundation.HRESULT>)lpVtbl[21])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentLocalizedControlType(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentLocalizedControlType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a localized description of the control type of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentlocalizedcontroltype">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentLocalizedControlType
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[22])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentName(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.get_CurrentName(retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the name of the element.</summary>
			/// <remarks>The name of an element can be used to find the element in the element tree when the automation ID property is not supported on the element.</remarks>
			public unsafe winmdroot.Foundation.HRESULT get_CurrentName(winmdroot.Foundation.BSTR* retVal)
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[23])((IUIAutomationElement*)Unsafe.AsPointer(ref this), retVal);
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentAcceleratorKey(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentAcceleratorKey;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the accelerator key for the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentacceleratorkey">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentAcceleratorKey
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[24])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentAccessKey(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentAccessKey;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the access key character for the element.</summary>
			/// <remarks>An access key is a character in the text of a menu, menu item, or label of a control such as a button that activates the attached menu function. For example, the letter "O" is often used to invoke the Open file common dialog box from a File menu. Microsoft UI Automation elements that have the access key property set always implement the <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-implementinginvoke">Invoke</a> control pattern.</remarks>
			internal winmdroot.Foundation.BSTR CurrentAccessKey
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[25])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentHasKeyboardFocus(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentHasKeyboardFocus;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element has keyboard focus.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currenthaskeyboardfocus">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentHasKeyboardFocus
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[26])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsKeyboardFocusable(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsKeyboardFocusable;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element can accept keyboard focus.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentiskeyboardfocusable">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsKeyboardFocusable
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[27])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsEnabled(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsEnabled;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element is enabled.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentisenabled">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsEnabled
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[28])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentAutomationId(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentAutomationId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the Microsoft UI Automation identifier of the element.</summary>
			/// <remarks>The identifier is unique among sibling elements in a container, and is the same in all instances of the application.</remarks>
			internal winmdroot.Foundation.BSTR CurrentAutomationId
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[29])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentClassName(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentClassName;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the class name of the element.</summary>
			/// <remarks>The value of this property is implementation-defined. The property is useful in testing environments.</remarks>
			internal winmdroot.Foundation.BSTR CurrentClassName
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[30])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentHelpText(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentHelpText;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the help text for the element.</summary>
			/// <remarks>
			/// <para>This information is typically obtained from tooltips. <div class="alert"><b>Caution</b>  Do not retrieve the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedhelptext">CachedHelpText</a> property from a control that is based on the SysListview32 class. Doing so could cause the system to become unstable and data to be lost. A client application can discover whether a control is based on SysListview32 by retrieving the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedclassname">CachedClassName</a> or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentclassname">CurrentClassName</a> property from the control.</div> <div> </div></para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currenthelptext#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentHelpText
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[31])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentCulture(IUIAutomationElement* pThis, int* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentCulture;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the culture identifier for the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentculture">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal int CurrentCulture
			{
				get
				{
					int __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[32])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsControlElement(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsControlElement;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element is a control element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentiscontrolelement">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsControlElement
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[33])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsContentElement(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsContentElement;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element is a content element.</summary>
			/// <remarks>A content element contains data that is presented to the user. Examples of content elements are the items in a list box or a button in a dialog box. Non-content elements, also called peripheral elements, are typically used to manipulate the content in a composite control; for example, the button on a drop-down control.</remarks>
			internal winmdroot.Foundation.BOOL CurrentIsContentElement
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[34])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsPassword(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsPassword;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element contains a disguised password.</summary>
			/// <remarks>This property enables applications such as screen-readers to determine whether the text content of a control should be read aloud.</remarks>
			internal winmdroot.Foundation.BOOL CurrentIsPassword
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[35])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentNativeWindowHandle(IUIAutomationElement* pThis, winmdroot.Foundation.HWND* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentNativeWindowHandle;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the window handle of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentnativewindowhandle">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.HWND CurrentNativeWindowHandle
			{
				get
				{
					winmdroot.Foundation.HWND __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HWND* ,winmdroot.Foundation.HRESULT>)lpVtbl[36])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentItemType(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentItemType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a description of the type of UI item represented by the element.</summary>
			/// <remarks>This property is used to obtain information about items in a list, tree view, or data grid. For example, an item in a file directory view might be a "Document File" or a "Folder".</remarks>
			internal winmdroot.Foundation.BSTR CurrentItemType
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[37])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsOffscreen(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsOffscreen;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element is off-screen.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentisoffscreen">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsOffscreen
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[38])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentOrientation(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.OrientationType* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentOrientation;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a value that indicates the orientation of the element.</summary>
			/// <remarks>This property is supported by controls such as scroll bars and sliders that can have either a vertical or a horizontal orientation.</remarks>
			internal winmdroot.UI.Accessibility.OrientationType CurrentOrientation
			{
				get
				{
					winmdroot.UI.Accessibility.OrientationType __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.OrientationType* ,winmdroot.Foundation.HRESULT>)lpVtbl[39])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentFrameworkId(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentFrameworkId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the name of the underlying UI framework.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentframeworkid">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentFrameworkId
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[40])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsRequiredForForm(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsRequiredForForm;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element is required to be filled out on a form.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentisrequiredforform">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsRequiredForForm
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[41])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentItemStatus(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentItemStatus;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the description of the status of an item in an element.</summary>
			/// <remarks>This property enables a client to ascertain whether an element is conveying status about an item. For example, an item associated with a contact in a messaging application might be "Busy" or "Connected".</remarks>
			internal winmdroot.Foundation.BSTR CurrentItemStatus
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[42])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			/// <inheritdoc cref="get_CurrentBoundingRectangle(winmdroot.Foundation.RECT*)"/>
			internal unsafe winmdroot.Foundation.HRESULT get_CurrentBoundingRectangle(out winmdroot.Foundation.RECT retVal)
			{
				fixed (winmdroot.Foundation.RECT* retValLocal = &retVal)
				{
					winmdroot.Foundation.HRESULT __result = this.get_CurrentBoundingRectangle(retValLocal);
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentBoundingRectangle(IUIAutomationElement* pThis, winmdroot.Foundation.RECT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.get_CurrentBoundingRectangle(retVal);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the coordinates of the rectangle that completely encloses the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentboundingrectangle">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.Foundation.HRESULT get_CurrentBoundingRectangle(winmdroot.Foundation.RECT* retVal)
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT>)lpVtbl[43])((IUIAutomationElement*)Unsafe.AsPointer(ref this), retVal);
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentLabeledBy(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElement** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentLabeledBy;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the element that contains the text label for this element.</summary>
			/// <remarks>
			/// <para>This property could be used to retrieve, for example, the static text label for a combo box. This property maps to the Accessible Rich Internet Applications (ARIA) <b>labeledby</b> property.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentlabeledby#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElement* CurrentLabeledBy
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElement* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[44])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentAriaRole(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentAriaRole;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the Accessible Rich Internet Applications (ARIA) role of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentariarole">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentAriaRole
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[45])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentAriaProperties(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentAriaProperties;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the Accessible Rich Internet Applications (ARIA) properties of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentariaproperties">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentAriaProperties
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[46])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentIsDataValidForForm(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentIsDataValidForForm;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Indicates whether the element contains valid data for a form.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentisdatavalidforform">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CurrentIsDataValidForForm
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[47])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentControllerFor(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentControllerFor;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves an array of elements for which this element serves as the controller.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentcontrollerfor">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentControllerFor
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[48])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentDescribedBy(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentDescribedBy;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves an array of elements that describe this element.</summary>
			/// <remarks>This property maps to the Accessible Rich Internet Applications (ARIA) <b>describedby</b> property.</remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentDescribedBy
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[49])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentFlowsTo(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentFlowsTo;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves an array of elements that indicates the reading order after the current element.</summary>
			/// <remarks>This property maps to the Accessible Rich Internet Applications (ARIA) <b>flowto</b> property.</remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentFlowsTo
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[50])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CurrentProviderDescription(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CurrentProviderDescription;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a description of the provider for this element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentproviderdescription">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CurrentProviderDescription
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[51])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedProcessId(IUIAutomationElement* pThis, int* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedProcessId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached ID of the process that hosts the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedprocessid">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal int CachedProcessId
			{
				get
				{
					int __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[52])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedControlType(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedControlType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates the control type of the element.</summary>
			/// <remarks>Control types describe a known interaction model for UI Automation elements without relying on a localized control type or combination of complex logic rules. This property cannot change at run time unless the control supports the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationmultipleviewpattern">IUIAutomationMultipleViewPattern</a> interface. An example is the Win32 ListView control, which can change from a data grid to a list, depending on the current view.</remarks>
			internal winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID CachedControlType
			{
				get
				{
					winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* ,winmdroot.Foundation.HRESULT>)lpVtbl[53])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedLocalizedControlType(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedLocalizedControlType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached localized description of the control type of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedlocalizedcontroltype">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedLocalizedControlType
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[54])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedName(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedName;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached name of the element.</summary>
			/// <remarks>The name of an element can be used to find the element in the element tree when the automation ID property is not supported on the element.</remarks>
			internal winmdroot.Foundation.BSTR CachedName
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[55])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedAcceleratorKey(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedAcceleratorKey;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached accelerator key for the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedacceleratorkey">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedAcceleratorKey
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[56])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedAccessKey(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedAccessKey;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached access key character for the element.</summary>
			/// <remarks>An access key is a character in the text of a menu, menu item, or label of a control such as a button that activates the attached menu function. For example, the letter "O" is often used to invoke the Open file common dialog box from a File menu. Microsoft UI Automation elements that have the access key property set always implement the <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-implementinginvoke">Invoke</a> control pattern.</remarks>
			internal winmdroot.Foundation.BSTR CachedAccessKey
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[57])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedHasKeyboardFocus(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedHasKeyboardFocus;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>A cached value that indicates whether the element has keyboard focus.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedhaskeyboardfocus">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedHasKeyboardFocus
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[58])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsKeyboardFocusable(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsKeyboardFocusable;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element can accept keyboard focus.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachediskeyboardfocusable">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedIsKeyboardFocusable
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[59])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsEnabled(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsEnabled;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element is enabled.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedisenabled">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedIsEnabled
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[60])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedAutomationId(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedAutomationId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached Microsoft UI Automation identifier of the element.</summary>
			/// <remarks>The  UI Automation identifier is unique among sibling elements in a container, and is the same in all instances of the application.</remarks>
			internal winmdroot.Foundation.BSTR CachedAutomationId
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[61])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedClassName(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedClassName;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached class name of the element.</summary>
			/// <remarks>The value of this property is implementation-defined. The property is useful in testing environments.</remarks>
			internal winmdroot.Foundation.BSTR CachedClassName
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[62])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedHelpText(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedHelpText;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached help text for the element.</summary>
			/// <remarks>
			/// <para>This information is typically obtained from ToolTips. <div class="alert"><b>Caution</b>  Do not retrieve the <b>CachedHelpText</b> property from a control that is based on the SysListview32 class. Doing so could cause the system to become unstable and data to be lost. A client application can discover whether a control is based on SysListview32 by retrieving the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedclassname">CachedClassName</a> or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_currentclassname">CurrentClassName</a> property from the control.</div> <div> </div></para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedhelptext#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedHelpText
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[63])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedCulture(IUIAutomationElement* pThis, int* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedCulture;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates the culture associated with the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedculture">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal int CachedCulture
			{
				get
				{
					int __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[64])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsControlElement(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsControlElement;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element is a control element.</summary>
			/// <remarks>Controls are elements in the UI that display information, or that can be manipulated by the user to perform an action.</remarks>
			internal winmdroot.Foundation.BOOL CachedIsControlElement
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[65])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsContentElement(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsContentElement;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>A cached value that indicates whether the element is a content element.</summary>
			/// <remarks>A content element contains data that is presented to the user. Examples of content elements are the items in a list box or a button in a dialog box. Non-content elements, also called peripheral elements, are typically used to manipulate the content in a composite control; for example, the button on a drop-down control.</remarks>
			internal winmdroot.Foundation.BOOL CachedIsContentElement
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[66])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsPassword(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsPassword;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element contains a disguised password.</summary>
			/// <remarks>This property enables applications such as screen-readers to determine whether the text content of a control should be read aloud.</remarks>
			internal winmdroot.Foundation.BOOL CachedIsPassword
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[67])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedNativeWindowHandle(IUIAutomationElement* pThis, winmdroot.Foundation.HWND* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedNativeWindowHandle;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached window handle of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachednativewindowhandle">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.HWND CachedNativeWindowHandle
			{
				get
				{
					winmdroot.Foundation.HWND __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HWND* ,winmdroot.Foundation.HRESULT>)lpVtbl[68])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedItemType(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedItemType;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached string that describes the type of item represented by the element.</summary>
			/// <remarks>This property is used to obtain information about items in a list, tree view, or data grid. For example, an item in a file directory view might be a "Document File" or a "Folder".</remarks>
			internal winmdroot.Foundation.BSTR CachedItemType
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[69])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsOffscreen(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsOffscreen;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element is off-screen.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedisoffscreen">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedIsOffscreen
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[70])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedOrientation(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.OrientationType* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedOrientation;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates the orientation of the element.</summary>
			/// <remarks>This property is supported by controls such as scroll bars and sliders that can have either a vertical or a horizontal orientation.</remarks>
			internal winmdroot.UI.Accessibility.OrientationType CachedOrientation
			{
				get
				{
					winmdroot.UI.Accessibility.OrientationType __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.OrientationType* ,winmdroot.Foundation.HRESULT>)lpVtbl[71])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedFrameworkId(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedFrameworkId;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached name of the underlying UI framework associated with the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedframeworkid">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedFrameworkId
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[72])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsRequiredForForm(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsRequiredForForm;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element is required to be filled out on a form.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedisrequiredforform">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedIsRequiredForForm
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[73])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedItemStatus(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedItemStatus;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached description of the status of an item within an element.</summary>
			/// <remarks>This property enables a client to ascertain whether an element is conveying status about an item. For example, an item associated with a contact in a messaging application might be "Busy" or "Connected".</remarks>
			internal winmdroot.Foundation.BSTR CachedItemStatus
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[74])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedBoundingRectangle(IUIAutomationElement* pThis, winmdroot.Foundation.RECT* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedBoundingRectangle;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached coordinates of the rectangle that completely encloses the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedboundingrectangle">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.RECT CachedBoundingRectangle
			{
				get
				{
					winmdroot.Foundation.RECT __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT>)lpVtbl[75])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedLabeledBy(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElement** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedLabeledBy;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached element that contains the text label for this element.</summary>
			/// <remarks>
			/// <para>This property could be used to retrieve, for example, the static text label for a combo box. This property maps to the Accessible Rich Internet Applications (ARIA) <b>labeledby</b> property.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedlabeledby#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElement* CachedLabeledBy
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElement* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[76])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedAriaRole(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedAriaRole;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached Accessible Rich Internet Applications (ARIA) role of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedariarole">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedAriaRole
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[77])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedAriaProperties(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedAriaProperties;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the cached Accessible Rich Internet Applications (ARIA) properties of the element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedariaproperties">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedAriaProperties
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[78])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedIsDataValidForForm(IUIAutomationElement* pThis, winmdroot.Foundation.BOOL* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedIsDataValidForForm;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached value that indicates whether the element contains valid data for the form.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedisdatavalidforform">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BOOL CachedIsDataValidForForm
			{
				get
				{
					winmdroot.Foundation.BOOL __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[79])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedControllerFor(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedControllerFor;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached array of UI Automation elements for which this element serves as the controller.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedcontrollerfor">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedControllerFor
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[80])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedDescribedBy(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedDescribedBy;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached array of elements that describe this element.</summary>
			/// <remarks>This property maps to the Accessible Rich Internet Applications (ARIA) <b>describedby</b> property.</remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedDescribedBy
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[81])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedFlowsTo(IUIAutomationElement* pThis, winmdroot.UI.Accessibility.IUIAutomationElementArray** retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedFlowsTo;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached array of elements that indicate the reading order after the current element.</summary>
			/// <remarks>This property maps to the Accessible Rich Internet Applications (ARIA) <b>flowto</b> property.</remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedFlowsTo
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationElementArray* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[82])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_CachedProviderDescription(IUIAutomationElement* pThis, winmdroot.Foundation.BSTR* retVal)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*retVal = __object.CachedProviderDescription;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a cached description of the provider for this element.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-get_cachedproviderdescription">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal winmdroot.Foundation.BSTR CachedProviderDescription
			{
				get
				{
					winmdroot.Foundation.BSTR __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[83])((IUIAutomationElement*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			/// <inheritdoc cref="GetClickablePoint(global::System.Drawing.Point*, winmdroot.Foundation.BOOL*)"/>
			internal unsafe winmdroot.Foundation.HRESULT GetClickablePoint(out global::System.Drawing.Point clickable, out winmdroot.Foundation.BOOL gotClickable)
			{
				fixed (winmdroot.Foundation.BOOL* gotClickableLocal = &gotClickable)
				{
					fixed (global::System.Drawing.Point* clickableLocal = &clickable)
					{
						winmdroot.Foundation.HRESULT __result = this.GetClickablePoint(clickableLocal, gotClickableLocal);
						return __result;
					}
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetClickablePoint(IUIAutomationElement* pThis, global::System.Drawing.Point* clickable, winmdroot.Foundation.BOOL* gotClickable)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetClickablePoint(clickable, gotClickable);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a point on the element that can be clicked.</summary>
			/// <param name="clickable">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a>*</b> Receives the physical screen coordinates of a point that can be used by a client to click this element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getclickablepoint#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="gotClickable">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">BOOL</a>*</b> Receives <b>TRUE</b> if a clickable point was retrieved, or <b>FALSE</b> otherwise.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getclickablepoint#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>A client application can use this method to simulate clicking the left or right mouse button. For example, to simulate clicking the right mouse button to display the context menu for a control: </para>
			/// <para>This doc was truncated.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getclickablepoint#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.Foundation.HRESULT GetClickablePoint(global::System.Drawing.Point* clickable, winmdroot.Foundation.BOOL* gotClickable)
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomationElement*,global::System.Drawing.Point* ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[84])((IUIAutomationElement*)Unsafe.AsPointer(ref this), clickable, gotClickable);
			}

			internal unsafe global::Windows.Win32.Foundation.HRESULT QueryInterface<T>(out T* ppv)
where T : unmanaged

			{
				var hr = this.QueryInterface(typeof(T).GUID, out void* pv);
				if (hr.Succeeded)

				{
					ppv = (T*)pv;
				}
				else

				{
					ppv = null;
				}

				return hr;
			}

			internal struct Vtbl
			{
				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> QueryInterface_1;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,uint> AddRef_2;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,uint> Release_3;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HRESULT> SetFocus_4;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT> GetRuntimeId_5;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> FindFirst_6;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> FindAll_7;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> FindFirstBuildCache_8;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> FindAllBuildCache_9;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> BuildUpdatedCache_10;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT> GetCurrentPropertyValue_11;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BOOL ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT> GetCurrentPropertyValueEx_12;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT> GetCachedPropertyValue_13;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BOOL ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT> GetCachedPropertyValueEx_14;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> GetCurrentPatternAs_15;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> GetCachedPatternAs_16;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT> GetCurrentPattern_17;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT> GetCachedPattern_18;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> GetCachedParent_19;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> GetCachedChildren_20;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT> get_CurrentProcessId_21;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* ,winmdroot.Foundation.HRESULT> get_CurrentControlType_22;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentLocalizedControlType_23;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentName_24;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentAcceleratorKey_25;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentAccessKey_26;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentHasKeyboardFocus_27;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsKeyboardFocusable_28;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsEnabled_29;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentAutomationId_30;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentClassName_31;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentHelpText_32;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT> get_CurrentCulture_33;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsControlElement_34;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsContentElement_35;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsPassword_36;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HWND* ,winmdroot.Foundation.HRESULT> get_CurrentNativeWindowHandle_37;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentItemType_38;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsOffscreen_39;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.OrientationType* ,winmdroot.Foundation.HRESULT> get_CurrentOrientation_40;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentFrameworkId_41;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsRequiredForForm_42;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentItemStatus_43;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT> get_CurrentBoundingRectangle_44;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> get_CurrentLabeledBy_45;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentAriaRole_46;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentAriaProperties_47;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CurrentIsDataValidForForm_48;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CurrentControllerFor_49;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CurrentDescribedBy_50;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CurrentFlowsTo_51;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CurrentProviderDescription_52;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT> get_CachedProcessId_53;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID* ,winmdroot.Foundation.HRESULT> get_CachedControlType_54;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedLocalizedControlType_55;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedName_56;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedAcceleratorKey_57;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedAccessKey_58;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedHasKeyboardFocus_59;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsKeyboardFocusable_60;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsEnabled_61;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedAutomationId_62;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedClassName_63;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedHelpText_64;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,int* ,winmdroot.Foundation.HRESULT> get_CachedCulture_65;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsControlElement_66;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsContentElement_67;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsPassword_68;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.HWND* ,winmdroot.Foundation.HRESULT> get_CachedNativeWindowHandle_69;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedItemType_70;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsOffscreen_71;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.OrientationType* ,winmdroot.Foundation.HRESULT> get_CachedOrientation_72;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedFrameworkId_73;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsRequiredForForm_74;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedItemStatus_75;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT> get_CachedBoundingRectangle_76;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> get_CachedLabeledBy_77;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedAriaRole_78;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedAriaProperties_79;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> get_CachedIsDataValidForForm_80;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CachedControllerFor_81;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CachedDescribedBy_82;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.UI.Accessibility.IUIAutomationElementArray** ,winmdroot.Foundation.HRESULT> get_CachedFlowsTo_83;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> get_CachedProviderDescription_84;

				internal delegate *unmanaged [Stdcall]<IUIAutomationElement*,global::System.Drawing.Point* ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> GetClickablePoint_85;
			} 
			public static void PopulateVTable(Vtbl* vtable)
			{
				vtable->SetFocus_4 = &SetFocus;
				vtable->GetRuntimeId_5 = &GetRuntimeId;
				vtable->FindFirst_6 = &FindFirst;
				vtable->FindAll_7 = &FindAll;
				vtable->FindFirstBuildCache_8 = &FindFirstBuildCache;
				vtable->FindAllBuildCache_9 = &FindAllBuildCache;
				vtable->BuildUpdatedCache_10 = &BuildUpdatedCache;
				vtable->GetCurrentPropertyValue_11 = &GetCurrentPropertyValue;
				vtable->GetCurrentPropertyValueEx_12 = &GetCurrentPropertyValueEx;
				vtable->GetCachedPropertyValue_13 = &GetCachedPropertyValue;
				vtable->GetCachedPropertyValueEx_14 = &GetCachedPropertyValueEx;
				vtable->GetCurrentPatternAs_15 = &GetCurrentPatternAs;
				vtable->GetCachedPatternAs_16 = &GetCachedPatternAs;
				vtable->GetCurrentPattern_17 = &GetCurrentPattern;
				vtable->GetCachedPattern_18 = &GetCachedPattern;
				vtable->GetCachedParent_19 = &GetCachedParent;
				vtable->GetCachedChildren_20 = &GetCachedChildren;
				vtable->get_CurrentProcessId_21 = &get_CurrentProcessId;
				vtable->get_CurrentControlType_22 = &get_CurrentControlType;
				vtable->get_CurrentLocalizedControlType_23 = &get_CurrentLocalizedControlType;
				vtable->get_CurrentName_24 = &get_CurrentName;
				vtable->get_CurrentAcceleratorKey_25 = &get_CurrentAcceleratorKey;
				vtable->get_CurrentAccessKey_26 = &get_CurrentAccessKey;
				vtable->get_CurrentHasKeyboardFocus_27 = &get_CurrentHasKeyboardFocus;
				vtable->get_CurrentIsKeyboardFocusable_28 = &get_CurrentIsKeyboardFocusable;
				vtable->get_CurrentIsEnabled_29 = &get_CurrentIsEnabled;
				vtable->get_CurrentAutomationId_30 = &get_CurrentAutomationId;
				vtable->get_CurrentClassName_31 = &get_CurrentClassName;
				vtable->get_CurrentHelpText_32 = &get_CurrentHelpText;
				vtable->get_CurrentCulture_33 = &get_CurrentCulture;
				vtable->get_CurrentIsControlElement_34 = &get_CurrentIsControlElement;
				vtable->get_CurrentIsContentElement_35 = &get_CurrentIsContentElement;
				vtable->get_CurrentIsPassword_36 = &get_CurrentIsPassword;
				vtable->get_CurrentNativeWindowHandle_37 = &get_CurrentNativeWindowHandle;
				vtable->get_CurrentItemType_38 = &get_CurrentItemType;
				vtable->get_CurrentIsOffscreen_39 = &get_CurrentIsOffscreen;
				vtable->get_CurrentOrientation_40 = &get_CurrentOrientation;
				vtable->get_CurrentFrameworkId_41 = &get_CurrentFrameworkId;
				vtable->get_CurrentIsRequiredForForm_42 = &get_CurrentIsRequiredForForm;
				vtable->get_CurrentItemStatus_43 = &get_CurrentItemStatus;
				vtable->get_CurrentBoundingRectangle_44 = &get_CurrentBoundingRectangle;
				vtable->get_CurrentLabeledBy_45 = &get_CurrentLabeledBy;
				vtable->get_CurrentAriaRole_46 = &get_CurrentAriaRole;
				vtable->get_CurrentAriaProperties_47 = &get_CurrentAriaProperties;
				vtable->get_CurrentIsDataValidForForm_48 = &get_CurrentIsDataValidForForm;
				vtable->get_CurrentControllerFor_49 = &get_CurrentControllerFor;
				vtable->get_CurrentDescribedBy_50 = &get_CurrentDescribedBy;
				vtable->get_CurrentFlowsTo_51 = &get_CurrentFlowsTo;
				vtable->get_CurrentProviderDescription_52 = &get_CurrentProviderDescription;
				vtable->get_CachedProcessId_53 = &get_CachedProcessId;
				vtable->get_CachedControlType_54 = &get_CachedControlType;
				vtable->get_CachedLocalizedControlType_55 = &get_CachedLocalizedControlType;
				vtable->get_CachedName_56 = &get_CachedName;
				vtable->get_CachedAcceleratorKey_57 = &get_CachedAcceleratorKey;
				vtable->get_CachedAccessKey_58 = &get_CachedAccessKey;
				vtable->get_CachedHasKeyboardFocus_59 = &get_CachedHasKeyboardFocus;
				vtable->get_CachedIsKeyboardFocusable_60 = &get_CachedIsKeyboardFocusable;
				vtable->get_CachedIsEnabled_61 = &get_CachedIsEnabled;
				vtable->get_CachedAutomationId_62 = &get_CachedAutomationId;
				vtable->get_CachedClassName_63 = &get_CachedClassName;
				vtable->get_CachedHelpText_64 = &get_CachedHelpText;
				vtable->get_CachedCulture_65 = &get_CachedCulture;
				vtable->get_CachedIsControlElement_66 = &get_CachedIsControlElement;
				vtable->get_CachedIsContentElement_67 = &get_CachedIsContentElement;
				vtable->get_CachedIsPassword_68 = &get_CachedIsPassword;
				vtable->get_CachedNativeWindowHandle_69 = &get_CachedNativeWindowHandle;
				vtable->get_CachedItemType_70 = &get_CachedItemType;
				vtable->get_CachedIsOffscreen_71 = &get_CachedIsOffscreen;
				vtable->get_CachedOrientation_72 = &get_CachedOrientation;
				vtable->get_CachedFrameworkId_73 = &get_CachedFrameworkId;
				vtable->get_CachedIsRequiredForForm_74 = &get_CachedIsRequiredForForm;
				vtable->get_CachedItemStatus_75 = &get_CachedItemStatus;
				vtable->get_CachedBoundingRectangle_76 = &get_CachedBoundingRectangle;
				vtable->get_CachedLabeledBy_77 = &get_CachedLabeledBy;
				vtable->get_CachedAriaRole_78 = &get_CachedAriaRole;
				vtable->get_CachedAriaProperties_79 = &get_CachedAriaProperties;
				vtable->get_CachedIsDataValidForForm_80 = &get_CachedIsDataValidForForm;
				vtable->get_CachedControllerFor_81 = &get_CachedControllerFor;
				vtable->get_CachedDescribedBy_82 = &get_CachedDescribedBy;
				vtable->get_CachedFlowsTo_83 = &get_CachedFlowsTo;
				vtable->get_CachedProviderDescription_84 = &get_CachedProviderDescription;
				vtable->GetClickablePoint_85 = &GetClickablePoint;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{d22108aa-8ac5-49a5-837b-37bbb3d7591e}</value>
			internal static readonly Guid IID_Guid = new Guid(0xD22108AA, 0x8AC5, 0x49A5, 0x83, 0x7B, 0x37, 0xBB, 0xB3, 0xD7, 0x59, 0x1E);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0xAA,0x08,0x21,0xD2,0xC5,0x8A,0xA5,0x49,0x83,0x7B,0x37,0xBB,0xB3,0xD7,0x59,0x1E					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("D22108AA-8AC5-49A5-837B-37BBB3D7591E"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),ComImport()]
			[SupportedOSPlatform("windows6.1")]
			internal interface Interface
			{
								[PreserveSig()]
winmdroot.Foundation.HRESULT SetFocus();

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetRuntimeId(winmdroot.System.Com.SAFEARRAY** runtimeId);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT FindFirst(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationElement** found);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT FindAll(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationElementArray** found);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT FindFirstBuildCache(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** found);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT FindAllBuildCache(winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElementArray** found);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT BuildUpdatedCache(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** updatedElement);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCurrentPropertyValue(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT* retVal);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCurrentPropertyValueEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue, winmdroot.System.Variant.VARIANT* retVal);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedPropertyValue(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT* retVal);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedPropertyValueEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.Foundation.BOOL ignoreDefaultValue, winmdroot.System.Variant.VARIANT* retVal);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCurrentPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid, void** patternObject);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedPatternAs(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, global::System.Guid* riid, void** patternObject);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCurrentPattern(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, winmdroot.System.Com.IUnknown** patternObject);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedPattern(winmdroot.UI.Accessibility.UIA_PATTERN_ID patternId, winmdroot.System.Com.IUnknown** patternObject);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedParent(winmdroot.UI.Accessibility.IUIAutomationElement** parent);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetCachedChildren(winmdroot.UI.Accessibility.IUIAutomationElementArray** children);

				int CurrentProcessId
				{
					get;
				}

				winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID CurrentControlType
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentLocalizedControlType
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT get_CurrentName(winmdroot.Foundation.BSTR* retVal);

				winmdroot.Foundation.BSTR CurrentAcceleratorKey
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentAccessKey
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentHasKeyboardFocus
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsKeyboardFocusable
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsEnabled
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentAutomationId
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentClassName
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentHelpText
				{
					get;
				}

				int CurrentCulture
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsControlElement
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsContentElement
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsPassword
				{
					get;
				}

				winmdroot.Foundation.HWND CurrentNativeWindowHandle
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentItemType
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsOffscreen
				{
					get;
				}

				winmdroot.UI.Accessibility.OrientationType CurrentOrientation
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentFrameworkId
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsRequiredForForm
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentItemStatus
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT get_CurrentBoundingRectangle(winmdroot.Foundation.RECT* retVal);

				unsafe winmdroot.UI.Accessibility.IUIAutomationElement* CurrentLabeledBy
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentAriaRole
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentAriaProperties
				{
					get;
				}

				winmdroot.Foundation.BOOL CurrentIsDataValidForForm
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentControllerFor
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentDescribedBy
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CurrentFlowsTo
				{
					get;
				}

				winmdroot.Foundation.BSTR CurrentProviderDescription
				{
					get;
				}

				int CachedProcessId
				{
					get;
				}

				winmdroot.UI.Accessibility.UIA_CONTROLTYPE_ID CachedControlType
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedLocalizedControlType
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedName
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedAcceleratorKey
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedAccessKey
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedHasKeyboardFocus
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsKeyboardFocusable
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsEnabled
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedAutomationId
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedClassName
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedHelpText
				{
					get;
				}

				int CachedCulture
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsControlElement
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsContentElement
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsPassword
				{
					get;
				}

				winmdroot.Foundation.HWND CachedNativeWindowHandle
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedItemType
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsOffscreen
				{
					get;
				}

				winmdroot.UI.Accessibility.OrientationType CachedOrientation
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedFrameworkId
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsRequiredForForm
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedItemStatus
				{
					get;
				}

				winmdroot.Foundation.RECT CachedBoundingRectangle
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElement* CachedLabeledBy
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedAriaRole
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedAriaProperties
				{
					get;
				}

				winmdroot.Foundation.BOOL CachedIsDataValidForForm
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedControllerFor
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedDescribedBy
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationElementArray* CachedFlowsTo
				{
					get;
				}

				winmdroot.Foundation.BSTR CachedProviderDescription
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetClickablePoint(global::System.Drawing.Point* clickable, winmdroot.Foundation.BOOL* gotClickable);
			}
		}
	}
}