File: Windows.Win32.IUIAutomation.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("30CBE57D-D9D0-452A-AB13-7AC5AC4825EE")]
		[SupportedOSPlatform("windows6.1")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IUIAutomation
			:IVTable<IUIAutomation,IUIAutomation.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]<IUIAutomation*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IUIAutomation*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

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

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

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

			/// <summary>Compares two UI Automation elements to determine whether they represent the same underlying UI element.</summary>
			/// <param name="el1">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the first element to compare.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-compareelements#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="el2">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the second element to compare.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-compareelements#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-iuiautomation-compareelements">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.Foundation.BOOL CompareElements(winmdroot.UI.Accessibility.IUIAutomationElement* el1, winmdroot.UI.Accessibility.IUIAutomationElement* el2)
			{
				winmdroot.Foundation.BOOL __retVal = default(winmdroot.Foundation.BOOL);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IUIAutomation*)Unsafe.AsPointer(ref this), el1, el2, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Compares two integer arrays containing run-time identifiers (IDs) to determine whether their content is the same and they belong to the same UI element.</summary>
			/// <param name="runtimeId1">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> The first ID to compare.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-compareruntimeids#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="runtimeId2">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> The second ID to compare</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-compareruntimeids#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-iuiautomation-compareruntimeids">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.Foundation.BOOL CompareRuntimeIds(winmdroot.System.Com.SAFEARRAY* runtimeId1, winmdroot.System.Com.SAFEARRAY* runtimeId2)
			{
				winmdroot.Foundation.BOOL __retVal = default(winmdroot.Foundation.BOOL);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IUIAutomation*)Unsafe.AsPointer(ref this), runtimeId1, runtimeId2, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the UI Automation element that represents the desktop.</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>You can use the root element as a starting point for finding other elements, using the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findall">FindAll</a> and <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirst">FindFirst</a> methods. When searching from the root element, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the scope of the search, 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.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getrootelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetRootElement()
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IUIAutomation*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves a UI Automation element for the specified window.</summary>
			/// <param name="hwnd">
			/// <para>Type: <b>UIA_HWND</b> The window handle.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromhandle#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-iuiautomation-elementfromhandle">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromHandle(winmdroot.Foundation.HWND hwnd)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.HWND ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IUIAutomation*)Unsafe.AsPointer(ref this), hwnd, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the UI Automation element at the specified point on the desktop.</summary>
			/// <param name="pt">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The desktop coordinates of the UI Automation element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfrompoint#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 <b>IUIAutomation::ElementFromPoint</b> method returns the <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-error-codes">UIA_E_ELEMENTNOTAVAILABLE</a> error code if the element under the point is already removed by the time the method returns. Clients should handle errors from this method gracefully; for example, by trying the call again.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromPoint(global::System.Drawing.Point pt)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,global::System.Drawing.Point ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IUIAutomation*)Unsafe.AsPointer(ref this), pt, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the UI Automation element that has the input focus.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>**</b> Receives a pointer to the UI Automation element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getfocusedelement#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 <b>IUIAutomation::GetFocusedElement</b> method returns the <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-error-codes">UIA_E_ELEMENTNOTAVAILABLE</a> error code if the focused element is already removed by the time the method returns. Clients should handle errors from this method gracefully; for example, by trying the call again.</remarks>
			public unsafe winmdroot.Foundation.HRESULT GetFocusedElement(winmdroot.UI.Accessibility.IUIAutomationElement** element)
			{
				return ((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IUIAutomation*)Unsafe.AsPointer(ref this), element);
			}

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

			/// <summary>Retrieves the UI Automation element that represents the desktop, prefetches the requested properties and control patterns, and stores the prefetched items in the 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 the cache request, which specifies the properties and control patterns to store in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getrootelementbuildcache#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>You can use the root element as a starting point for finding other elements, using the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findall">FindAll</a> and <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-findfirst">FindFirst</a> methods. When searching from the root element, be sure to specify <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/ne-uiautomationclient-treescope">TreeScope_Children</a> in the scope of the search, 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.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getrootelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetRootElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IUIAutomation*)Unsafe.AsPointer(ref this), cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves a UI Automation element for the specified window, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</summary>
			/// <param name="hwnd">
			/// <para>Type: <b>UIA_HWND</b> The window handle.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromhandlebuildcache#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 the cache request, which specifies the properties and control patterns to store in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromhandlebuildcache#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-iuiautomation-elementfromhandlebuildcache">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromHandleBuildCache(winmdroot.Foundation.HWND hwnd, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.HWND ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IUIAutomation*)Unsafe.AsPointer(ref this), hwnd, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT ElementFromPointBuildCache(IUIAutomation* pThis, global::System.Drawing.Point pt, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** element)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.ElementFromPointBuildCache(pt, cacheRequest, element);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves the UI Automation element at the specified point on the desktop, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</summary>
			/// <param name="pt">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The desktop coordinates of the UI Automation element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfrompointbuildcache#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 the cache request, which specifies the properties and control patterns to store in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfrompointbuildcache#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-iuiautomation-elementfrompointbuildcache">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromPointBuildCache(global::System.Drawing.Point pt, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,global::System.Drawing.Point ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IUIAutomation*)Unsafe.AsPointer(ref this), pt, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the UI Automation element that has the input focus, prefetches the requested properties and control patterns, and stores the prefetched items in the 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 the cache request, which specifies the properties and control patterns to store in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getfocusedelementbuildcache#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-iuiautomation-getfocusedelementbuildcache">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetFocusedElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IUIAutomation*)Unsafe.AsPointer(ref this), cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves a tree walker object that can be used to traverse the Microsoft UI Automation tree.</summary>
			/// <param name="pCondition">
			/// <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 specifies the elements of interest.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createtreewalker#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-iuiautomation-createtreewalker">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* CreateTreeWalker(winmdroot.UI.Accessibility.IUIAutomationCondition* pCondition)
			{
				winmdroot.UI.Accessibility.IUIAutomationTreeWalker* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationTreeWalker*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IUIAutomation*)Unsafe.AsPointer(ref this), pCondition, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves an IUIAutomationTreeWalker interface used to discover control elements.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_controlviewwalker">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* ControlViewWalker
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationTreeWalker* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves an IUIAutomationTreeWalker interface used to discover content elements.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_contentviewwalker">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* ContentViewWalker
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationTreeWalker* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves a tree walker object used to traverse an unfiltered view of the Microsoft UI Automation tree.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_rawviewwalker">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* RawViewWalker
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationTreeWalker* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT>)lpVtbl[16])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves a predefined IUIAutomationCondition interface that selects all UI elements in an unfiltered view.</summary>
			/// <remarks>Used by itself, the condition is functionally identical to the one retrieved by <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createtruecondition">IUIAutomation::CreateTrueCondition</a>.</remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* RawViewCondition
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationCondition* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[17])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves a predefined IUIAutomationCondition interface that selects control elements.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_controlviewcondition">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* ControlViewCondition
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationCondition* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[18])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves a predefined IUIAutomationCondition interface that selects content elements.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_contentviewcondition">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* ContentViewCondition
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationCondition* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[19])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Creates a cache request.</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>After obtaining the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a> interface, use its methods to specify properties and control patterns to be cached when a UI Automation element is obtained.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCacheRequest* CreateCacheRequest()
			{
				winmdroot.UI.Accessibility.IUIAutomationCacheRequest* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCacheRequest*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest** ,winmdroot.Foundation.HRESULT>)lpVtbl[20])((IUIAutomation*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves a predefined condition that selects all elements.</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-iuiautomation-createtruecondition">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateTrueCondition()
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[21])((IUIAutomation*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a condition that is always false.</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>This method exists only for symmetry with <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createtruecondition">IUIAutomation::CreateTrueCondition</a>. A false condition will never enable a match with UI Automation elements, and it cannot usefully be combined with any other condition.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateFalseCondition()
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[22])((IUIAutomation*)Unsafe.AsPointer(ref this), &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a condition that selects elements that have a property with the specified value.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The property identifier.  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-iuiautomation-createpropertycondition#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="value">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-variant">VARIANT</a></b> The property value.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createpropertycondition#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-iuiautomation-createpropertycondition">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreatePropertyCondition(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT value)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[23])((IUIAutomation*)Unsafe.AsPointer(ref this), propertyId, value, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a condition that selects elements that have a property with the specified value, using optional flags.</summary>
			/// <param name="propertyId">
			/// <para>Type: <b>PROPERTYID</b> The property identifier.  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-iuiautomation-createpropertyconditionex#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="value">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a></b> The property value.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createpropertyconditionex#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-iuiautomation-createpropertyconditionex">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreatePropertyConditionEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT value, winmdroot.UI.Accessibility.PropertyConditionFlags flags)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT ,winmdroot.UI.Accessibility.PropertyConditionFlags ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[24])((IUIAutomation*)Unsafe.AsPointer(ref this), propertyId, value, flags, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a condition that selects elements that match both of two conditions.</summary>
			/// <param name="condition1">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to the first condition to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandcondition#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="condition2">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to the second condition to match.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandcondition#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 condition that combines more than two simple conditions can be created by using <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandconditionfromarray">IUIAutomation::CreateAndConditionFromArray</a> or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandconditionfromnativearray">IUIAutomation::CreateAndConditionFromNativeArray</a>.</para>
			/// <para>The <b>CreateAndCondition</b> method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the <i>condition1</i> and <i>condition2</i> pointers. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those two pointers after the call to <b>CreateAndCondition</b> returns  without invalidating the pointer returned from <b>CreateAndCondition</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateAndCondition</b>, UI Automation calls <b>Release</b> on the <i>condition1</i> and <i>condition2</i> pointers.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandcondition#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateAndCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition1, winmdroot.UI.Accessibility.IUIAutomationCondition* condition2)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[25])((IUIAutomation*)Unsafe.AsPointer(ref this), condition1, condition2, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT CreateAndConditionFromArray(IUIAutomation* pThis, winmdroot.System.Com.SAFEARRAY* conditions, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.CreateAndConditionFromArray(conditions, newCondition);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Creates a condition that selects elements based on multiple conditions, all of which must be true.</summary>
			/// <param name="conditions">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> A pointer to the conditions to be combined.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandconditionfromarray#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>This method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on each pointer in the <i>conditions</i> array. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those pointers after the call to <b>CreateAndConditionFromArray</b> returns  without invalidating the pointer returned from <b>CreateAndConditionFromArray</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateAndConditionFromArray</b>, UI Automation calls <b>Release</b> on each pointer in the <i>conditions</i> array.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateAndConditionFromArray(winmdroot.System.Com.SAFEARRAY* conditions)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[26])((IUIAutomation*)Unsafe.AsPointer(ref this), conditions, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT CreateAndConditionFromNativeArray(IUIAutomation* pThis, winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.CreateAndConditionFromNativeArray(conditions, conditionCount, newCondition);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Creates a condition that selects elements from a native array, based on multiple conditions that must all be true.</summary>
			/// <param name="conditions">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>**</b> A pointer to an array of conditions to be combined.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandconditionfromnativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="conditionCount">
			/// <para>Type: <b>int</b> The number of elements in the <i>conditions</i> array.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createandconditionfromnativearray#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>This method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on each pointer in the <i>conditions</i> array. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those pointers after the call to <b>CreateAndConditionFromNativeArray</b> returns  without invalidating the pointer returned from <b>CreateAndConditionFromNativeArray</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateAndConditionFromNativeArray</b>, UI Automation calls <b>Release</b> on each pointer in the <i>conditions</i> array.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateAndConditionFromNativeArray(winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,int ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[27])((IUIAutomation*)Unsafe.AsPointer(ref this), conditions, conditionCount, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a combination of two conditions where a match exists if either of the conditions is true.</summary>
			/// <param name="condition1">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to the first condition.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createorcondition#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="condition2">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>*</b> A pointer to the second condition.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createorcondition#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 <b>CreateOrCondition</b> method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the <i>condition1</i> and <i>condition2</i> pointers. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those two pointers after the call to <b>CreateOrCondition</b> returns  without invalidating the pointer returned from <b>CreateOrCondition</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateOrCondition</b>, UI Automation calls <b>Release</b> on the <i>condition1</i> and <i>condition2</i> pointers.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateOrCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition1, winmdroot.UI.Accessibility.IUIAutomationCondition* condition2)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[28])((IUIAutomation*)Unsafe.AsPointer(ref this), condition1, condition2, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT CreateOrConditionFromArray(IUIAutomation* pThis, winmdroot.System.Com.SAFEARRAY* conditions, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.CreateOrConditionFromArray(conditions, newCondition);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Creates a combination of two or more conditions where a match exists if any of the conditions is true.</summary>
			/// <param name="conditions">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> A pointer to the conditions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createorconditionfromarray#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>This method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on each pointer in the <i>conditions</i> array. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those pointers after the call to <b>CreateOrConditionFromArray</b> returns  without invalidating the pointer returned from <b>CreateOrConditionFromArray</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateOrConditionFromArray</b>, UI Automation calls <b>Release</b> on each pointer in the <i>conditions</i> array.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateOrConditionFromArray(winmdroot.System.Com.SAFEARRAY* conditions)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[29])((IUIAutomation*)Unsafe.AsPointer(ref this), conditions, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT CreateOrConditionFromNativeArray(IUIAutomation* pThis, winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.CreateOrConditionFromNativeArray(conditions, conditionCount, newCondition);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Creates a combination of two or more conditions where a match exists if any one of the conditions is true.</summary>
			/// <param name="conditions">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcondition">IUIAutomationCondition</a>**</b> A pointer to an array of conditions to combine.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createorconditionfromnativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="conditionCount">
			/// <para>Type: <b>int</b> The number of elements in <i>conditions</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createorconditionfromnativearray#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>This method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on each pointer in the <i>conditions</i> array. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on those pointers after the call to <b>CreateOrConditionFromNativeArray</b> returns  without invalidating the pointer returned from <b>CreateOrConditionFromNativeArray</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateOrConditionFromNativeArray</b>, UI Automation calls <b>Release</b> on each pointer in the <i>conditions</i> array.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateOrConditionFromNativeArray(winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,int ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[30])((IUIAutomation*)Unsafe.AsPointer(ref this), conditions, conditionCount, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a condition that is the negative of a 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 the initial condition.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createnotcondition#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 <b>CreateNotCondition</b> method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the <i>condition</i> pointer. This means you can call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on that pointer after the call to <b>CreateNotCondition</b> returns  without invalidating the pointer returned from <b>CreateNotCondition</b>. When you call <b>Release</b> on the pointer returned from  <b>CreateNotCondition</b>, UI Automation calls <b>Release</b> on the <i>condition</i> pointer.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* CreateNotCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition)
			{
				winmdroot.UI.Accessibility.IUIAutomationCondition* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationCondition*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[31])((IUIAutomation*)Unsafe.AsPointer(ref this), condition, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT AddAutomationEventHandler(IUIAutomation* pThis, winmdroot.UI.Accessibility.UIA_EVENT_ID eventId, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationEventHandler* handler)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.AddAutomationEventHandler(eventId, element, scope, cacheRequest, handler);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Registers a method that handles Microsoft UI Automation events.Note  Before implementing an event handler, you should be familiar with the threading issues described in Understanding Threading Issues.</summary>
			/// <param name="eventId">
			/// <para>Type: <b>EVENTID</b> The identifier of the event that the method handles. For a list of event IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-event-ids">Event Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addautomationeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element to associate with the event handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addautomationeventhandler#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, or <b>NULL</b> if no caching is wanted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addautomationeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationeventhandler">IUIAutomationEventHandler</a>*</b> A pointer to the object that handles the event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addautomationeventhandler#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>A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process.</remarks>
			public unsafe void AddAutomationEventHandler(winmdroot.UI.Accessibility.UIA_EVENT_ID eventId, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_EVENT_ID ,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[32])((IUIAutomation*)Unsafe.AsPointer(ref this), eventId, element, scope, cacheRequest, handler).ThrowOnFailure();
			}

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

			/// <summary>Removes the specified UI Automation event handler.</summary>
			/// <param name="eventId">
			/// <para>Type: <b>EVENTID</b> The identifier of the event being handled. For a list of event IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-event-ids">Event Identifiers</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removeautomationeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element that is handling the event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removeautomationeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationeventhandler">IUIAutomationEventHandler</a>*</b> A pointer to the handler method that was passed to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addautomationeventhandler">IUIAutomation::AddAutomationEventHandler</a> for the specified event identifier and UI Automation element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removeautomationeventhandler#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 UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process. It is possible for an event to be delivered to an event handler after the handler has been unsubscribed, if the event is received simultaneously with the request to unsubscribe the event. The best practice is to follow the Component Object Model (COM) standard and avoid destroying the event handler object until its reference count has reached zero. Destroying an event handler immediately after unsubscribing for events may result in an access violation if an event is delivered late.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removeautomationeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void RemoveAutomationEventHandler(winmdroot.UI.Accessibility.UIA_EVENT_ID eventId, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_EVENT_ID ,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[33])((IUIAutomation*)Unsafe.AsPointer(ref this), eventId, element, handler).ThrowOnFailure();
			}

			/// <inheritdoc cref="AddPropertyChangedEventHandlerNativeArray(winmdroot.UI.Accessibility.IUIAutomationElement*, winmdroot.UI.Accessibility.TreeScope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest*, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler*, winmdroot.UI.Accessibility.UIA_PROPERTY_ID*, int)"/>
			internal unsafe void AddPropertyChangedEventHandlerNativeArray(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, ReadOnlySpan<winmdroot.UI.Accessibility.UIA_PROPERTY_ID> propertyArray)
			{
				fixed (winmdroot.UI.Accessibility.UIA_PROPERTY_ID* propertyArrayLocal = propertyArray)
				{
					this.AddPropertyChangedEventHandlerNativeArray(element, scope, cacheRequest, handler, propertyArrayLocal, propertyArray.Length);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT AddPropertyChangedEventHandlerNativeArray(IUIAutomation* pThis, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.UI.Accessibility.UIA_PROPERTY_ID* propertyArray, int propertyCount)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.AddPropertyChangedEventHandlerNativeArray(element, scope, cacheRequest, handler, propertyArray, propertyCount);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Registers a method that handles a native array of property-changed events.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element associated with the event handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandlernativearray#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, or <b>NULL</b> if no caching is wanted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandlernativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationpropertychangedeventhandler">IUIAutomationPropertyChangedEventHandler</a>*</b> A pointer to the object that handles the event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandlernativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="propertyArray">
			/// <para>Type: <b>PROPERTYID*</b> A pointer to the identifiers of the UI Automation properties of interest.  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-iuiautomation-addpropertychangedeventhandlernativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="propertyCount">
			/// <para>Type: <b>int</b> The number of property identifiers in <i>propertyArray</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandlernativearray#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 UI item specified by <i>element</i> might not support the properties specified by the <i>propertyArray</i> parameter. This method serves the same purpose as <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler">IUIAutomation::AddPropertyChangedEventHandler</a>, but takes a normal array of property identifiers instead of a SAFEARRAY.</para>
			/// <para>A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandlernativearray#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void AddPropertyChangedEventHandlerNativeArray(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.UI.Accessibility.UIA_PROPERTY_ID* propertyArray, int propertyCount)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* ,winmdroot.UI.Accessibility.UIA_PROPERTY_ID* ,int ,winmdroot.Foundation.HRESULT>)lpVtbl[34])((IUIAutomation*)Unsafe.AsPointer(ref this), element, scope, cacheRequest, handler, propertyArray, propertyCount).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT AddPropertyChangedEventHandler(IUIAutomation* pThis, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.System.Com.SAFEARRAY* propertyArray)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.AddPropertyChangedEventHandler(element, scope, cacheRequest, handler, propertyArray);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Registers a method that handles and array of property-changed events.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element associated with the event handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler#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, or <b>NULL</b> if no caching is wanted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationpropertychangedeventhandler">IUIAutomationPropertyChangedEventHandler</a>*</b> A pointer to the object that handles the event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="propertyArray">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> A pointer to the UI Automation properties of interest. 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-iuiautomation-addpropertychangedeventhandler#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 UI item specified by <i>element</i> might not support the properties specified by the <i>propertyArray</i> parameter.</para>
			/// <para>A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void AddPropertyChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.System.Com.SAFEARRAY* propertyArray)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* ,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.HRESULT>)lpVtbl[35])((IUIAutomation*)Unsafe.AsPointer(ref this), element, scope, cacheRequest, handler, propertyArray).ThrowOnFailure();
			}

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

			/// <summary>Removes a property-changed event handler.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element from which to remove the handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removepropertychangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationpropertychangedeventhandler">IUIAutomationPropertyChangedEventHandler</a>*</b> A pointer to the interface that was passed to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addpropertychangedeventhandler">IUIAutomation::AddPropertyChangedEventHandler</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removepropertychangedeventhandler#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 UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process. It is possible for an event to be delivered to an event handler after the handler has been unsubscribed, if the event is received simultaneously with the request to unsubscribe the event. The best practice is to follow the Component Object Model (COM) standard and avoid destroying the event handler object until its reference count has reached zero. Destroying an event handler immediately after unsubscribing for events may result in an access violation if an event is delivered late.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removepropertychangedeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void RemovePropertyChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[36])((IUIAutomation*)Unsafe.AsPointer(ref this), element, handler).ThrowOnFailure();
			}

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

			/// <summary>Registers a method that handles structure-changed events.Note  Before implementing an event handler, you should be familiar with the threading issues described in Understanding Threading Issues.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element associated with the event handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addstructurechangedeventhandler#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, or <b>NULL</b> if no caching is wanted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addstructurechangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationstructurechangedeventhandler">IUIAutomationStructureChangedEventHandler</a>*</b> A pointer to the object that handles the structure-changed event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addstructurechangedeventhandler#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>A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process.</remarks>
			public unsafe void AddStructureChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[37])((IUIAutomation*)Unsafe.AsPointer(ref this), element, scope, cacheRequest, handler).ThrowOnFailure();
			}

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

			/// <summary>Removes a structure-changed event handler.</summary>
			/// <param name="element">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> A pointer to the UI Automation element from which to remove the handler.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removestructurechangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationstructurechangedeventhandler">IUIAutomationStructureChangedEventHandler</a>*</b> A pointer to the  interface that was passed to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addstructurechangedeventhandler">IUIAutomation::AddStructureChangedEventHandler</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removestructurechangedeventhandler#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 UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process. It is possible for an event to be delivered to an event handler after the handler has been unsubscribed, if the event is received simultaneously with the request to unsubscribe the event. The best practice is to follow the Component Object Model (COM) standard and avoid destroying the event handler object until its reference count has reached zero. Destroying an event handler immediately after unsubscribing for events may result in an access violation if an event is delivered late.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removestructurechangedeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void RemoveStructureChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[38])((IUIAutomation*)Unsafe.AsPointer(ref this), element, handler).ThrowOnFailure();
			}

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

			/// <summary>Registers a method that handles focus-changed events.Note  Before implementing an event handler, you should be familiar with the threading issues described in Understanding Threading Issues.</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, or <b>NULL</b> if no caching is wanted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addfocuschangedeventhandler#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationfocuschangedeventhandler">IUIAutomationFocusChangedEventHandler</a>*</b> A pointer to the object that handles the event.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addfocuschangedeventhandler#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>Focus-changed events are system-wide; you cannot set a narrower scope. A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addfocuschangedeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void AddFocusChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[39])((IUIAutomation*)Unsafe.AsPointer(ref this), cacheRequest, handler).ThrowOnFailure();
			}

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

			/// <summary>Removes a focus-changed event handler.</summary>
			/// <param name="handler">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationfocuschangedeventhandler">IUIAutomationFocusChangedEventHandler</a>*</b> A pointer to the event handler that was passed to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomation-addfocuschangedeventhandler">IUIAutomation::AddFocusChangedEventHandler</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removefocuschangedeventhandler#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 UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process. It is possible for an event to be delivered to an event handler after the handler has been unsubscribed, if the event is received simultaneously with the request to unsubscribe the event. The best practice is to follow the Component Object Model (COM) standard and avoid destroying the event handler object until its reference count has reached zero. Destroying an event handler immediately after unsubscribing for events may result in an access violation if an event is delivered late.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removefocuschangedeventhandler#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void RemoveFocusChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* handler)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* ,winmdroot.Foundation.HRESULT>)lpVtbl[40])((IUIAutomation*)Unsafe.AsPointer(ref this), handler).ThrowOnFailure();
			}

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

			/// <summary>Removes all registered Microsoft UI Automation event handlers.</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>A UI Automation client should not use multiple threads to add or remove event handlers. Unexpected behavior can result if one event handler is being added or removed while another is being added or removed in the same client process. It is possible for an event to be delivered to an event handler after the handler has been unsubscribed, if the event is received simultaneously with the request to unsubscribe the event. The best practice is to follow the Component Object Model (COM) standard and avoid destroying the event handler object until its reference count has reached zero. Destroying an event handler immediately after unsubscribing for events may result in an access violation if an event is delivered late.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-removealleventhandlers#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public void RemoveAllEventHandlers()
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.HRESULT>)lpVtbl[41])((IUIAutomation*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

			/// <inheritdoc cref="IntNativeArrayToSafeArray(int*, int)"/>
			internal unsafe winmdroot.System.Com.SAFEARRAY* IntNativeArrayToSafeArray(ReadOnlySpan<int> array)
			{
				fixed (int* arrayLocal = array)
				{
					winmdroot.System.Com.SAFEARRAY* __result = this.IntNativeArrayToSafeArray(arrayLocal, array.Length);
					return __result;
				}
			}

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

			/// <summary>Converts an array of integers to a SAFEARRAY.</summary>
			/// <param name="array">
			/// <para>Type: <b>int*</b> A pointer to an array of integers.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-intnativearraytosafearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="arrayCount">
			/// <para>Type: <b>int</b> The number of elements in <i>array</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-intnativearraytosafearray#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-iuiautomation-intnativearraytosafearray">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.System.Com.SAFEARRAY* IntNativeArrayToSafeArray(int* array, int arrayCount)
			{
				winmdroot.System.Com.SAFEARRAY* __retVal = default(winmdroot.System.Com.SAFEARRAY*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,int* ,int ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT>)lpVtbl[42])((IUIAutomation*)Unsafe.AsPointer(ref this), array, arrayCount, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Converts a SAFEARRAY of integers to an array.</summary>
			/// <param name="intArray">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> A pointer to the SAFEARRAY to convert.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-intsafearraytonativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="array">
			/// <para>Type: <b>int**</b> Receives a pointer to the allocated array.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-intsafearraytonativearray#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-iuiautomation-intsafearraytonativearray">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe int IntSafeArrayToNativeArray(winmdroot.System.Com.SAFEARRAY* intArray, int** array)
			{
				int __retVal = default(int);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,int** ,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[43])((IUIAutomation*)Unsafe.AsPointer(ref this), intArray, array, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT RectToVariant(IUIAutomation* pThis, winmdroot.Foundation.RECT rc, winmdroot.System.Variant.VARIANT* var)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.RectToVariant(rc, var);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Creates a VARIANT that contains the coordinates of a rectangle.</summary>
			/// <param name="rc">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a>*</b> A pointer to a structure that contains the coordinates of the rectangle.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-recttovariant#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 returned <a href="https://docs.microsoft.com/windows/desktop/WinAuto/variant-structure">VARIANT</a> has a data type of VT_ARRAY | VT_R8.</remarks>
			public winmdroot.System.Variant.VARIANT RectToVariant(winmdroot.Foundation.RECT rc)
			{
				winmdroot.System.Variant.VARIANT __retVal = default(winmdroot.System.Variant.VARIANT);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.RECT ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT>)lpVtbl[44])((IUIAutomation*)Unsafe.AsPointer(ref this), rc, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT VariantToRect(IUIAutomation* pThis, winmdroot.System.Variant.VARIANT var, winmdroot.Foundation.RECT* rc)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.VariantToRect(var, rc);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Converts a VARIANT containing rectangle coordinates to a RECT.</summary>
			/// <param name="var">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-variant">VARIANT</a></b> The coordinates of a rectangle.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-varianttorect#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-iuiautomation-varianttorect">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.Foundation.RECT VariantToRect(winmdroot.System.Variant.VARIANT var)
			{
				winmdroot.Foundation.RECT __retVal = default(winmdroot.Foundation.RECT);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Variant.VARIANT ,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT>)lpVtbl[45])((IUIAutomation*)Unsafe.AsPointer(ref this), var, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SafeArrayToRectNativeArray(IUIAutomation* pThis, winmdroot.System.Com.SAFEARRAY* rects, winmdroot.Foundation.RECT** rectArray, int* rectArrayCount)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SafeArrayToRectNativeArray(rects, rectArray, rectArrayCount);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Converts a SAFEARRAY containing rectangle coordinates to an array of type RECT.</summary>
			/// <param name="rects">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray">SAFEARRAY</a>*</b> A pointer to an array containing rectangle coordinates.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-safearraytorectnativearray#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="rectArray">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a>**</b> Receives a pointer to an array of structures containing rectangle coordinates.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-safearraytorectnativearray#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-iuiautomation-safearraytorectnativearray">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe int SafeArrayToRectNativeArray(winmdroot.System.Com.SAFEARRAY* rects, winmdroot.Foundation.RECT** rectArray)
			{
				int __retVal = default(int);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.RECT** ,int* ,winmdroot.Foundation.HRESULT>)lpVtbl[46])((IUIAutomation*)Unsafe.AsPointer(ref this), rects, rectArray, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Creates a new instance of a proxy factory object.</summary>
			/// <param name="factory">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationproxyfactory">IUIAutomationProxyFactory</a>*</b> A pointer to  the proxy factory object.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-createproxyfactoryentry#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>Use the <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationproxyfactorymapping">IUIAutomationProxyFactoryMapping</a> interface to enter the proxy factory into the table of available proxies.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry* CreateProxyFactoryEntry(winmdroot.UI.Accessibility.IUIAutomationProxyFactory* factory)
			{
				winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationProxyFactory* ,winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry** ,winmdroot.Foundation.HRESULT>)lpVtbl[47])((IUIAutomation*)Unsafe.AsPointer(ref this), factory, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves an object that represents the mapping of Window classnames and associated data to individual proxy factories.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-get_proxyfactorymapping">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationProxyFactoryMapping* ProxyFactoryMapping
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationProxyFactoryMapping* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationProxyFactoryMapping** ,winmdroot.Foundation.HRESULT>)lpVtbl[48])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves the registered programmatic name of a property.</summary>
			/// <param name="property">
			/// <para>Type: <b>PROPERTYID</b> The property identifier.  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-iuiautomation-getpropertyprogrammaticname#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 programmatic name is intended for debugging and diagnostic purposes only. The string is not localized. This property should not be used in string comparisons. To determine whether two properties are the same, compare the property identifiers directly.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getpropertyprogrammaticname#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.Foundation.BSTR GetPropertyProgrammaticName(winmdroot.UI.Accessibility.UIA_PROPERTY_ID property)
			{
				winmdroot.Foundation.BSTR __retVal = default(winmdroot.Foundation.BSTR);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[49])((IUIAutomation*)Unsafe.AsPointer(ref this), property, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the registered programmatic name of a control pattern.</summary>
			/// <param name="pattern">
			/// <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-iuiautomation-getpatternprogrammaticname#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 programmatic name is intended for debugging and diagnostic purposes only. The string is not localized. This property should not be used in string comparisons. To determine whether two control patterns are the same, compare the control pattern identifiers directly.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-getpatternprogrammaticname#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public winmdroot.Foundation.BSTR GetPatternProgrammaticName(winmdroot.UI.Accessibility.UIA_PATTERN_ID pattern)
			{
				winmdroot.Foundation.BSTR __retVal = default(winmdroot.Foundation.BSTR);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[50])((IUIAutomation*)Unsafe.AsPointer(ref this), pattern, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			/// <inheritdoc cref="PollForPotentialSupportedPatterns(winmdroot.UI.Accessibility.IUIAutomationElement*, winmdroot.System.Com.SAFEARRAY**, winmdroot.System.Com.SAFEARRAY**)"/>
			internal unsafe void PollForPotentialSupportedPatterns(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, out winmdroot.System.Com.SAFEARRAY* patternIds, out winmdroot.System.Com.SAFEARRAY* patternNames)
			{
				fixed (winmdroot.System.Com.SAFEARRAY** patternNamesLocal = &patternNames)
				{
					fixed (winmdroot.System.Com.SAFEARRAY** patternIdsLocal = &patternIds)
					{
						this.PollForPotentialSupportedPatterns(pElement, patternIdsLocal, patternNamesLocal);
					}
				}
			}

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

			/// <summary>Retrieves the control patterns that might be supported on a UI Automation element.</summary>
			/// <param name="pElement">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> The address of the element to poll.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedpatterns#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="patternIds">
			/// <para>Type: <b>SAFEARRAY(int)**</b> Receives a pointer to an array of control pattern identifiers.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedpatterns#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="patternNames">
			/// <para>Type: <b>SAFEARRAY(BSTR)**</b> Receives a pointer to an array of control pattern names.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedpatterns#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 is intended only for use by Microsoft UI Automation tools that need to scan for properties. It is not intended to be used by UI Automation clients. There is no guarantee that the element will support any particular control pattern when asked for it later.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedpatterns#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PollForPotentialSupportedPatterns(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, winmdroot.System.Com.SAFEARRAY** patternIds, winmdroot.System.Com.SAFEARRAY** patternNames)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT>)lpVtbl[51])((IUIAutomation*)Unsafe.AsPointer(ref this), pElement, patternIds, patternNames).ThrowOnFailure();
			}

			/// <inheritdoc cref="PollForPotentialSupportedProperties(winmdroot.UI.Accessibility.IUIAutomationElement*, winmdroot.System.Com.SAFEARRAY**, winmdroot.System.Com.SAFEARRAY**)"/>
			internal unsafe void PollForPotentialSupportedProperties(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, out winmdroot.System.Com.SAFEARRAY* propertyIds, out winmdroot.System.Com.SAFEARRAY* propertyNames)
			{
				fixed (winmdroot.System.Com.SAFEARRAY** propertyNamesLocal = &propertyNames)
				{
					fixed (winmdroot.System.Com.SAFEARRAY** propertyIdsLocal = &propertyIds)
					{
						this.PollForPotentialSupportedProperties(pElement, propertyIdsLocal, propertyNamesLocal);
					}
				}
			}

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

			/// <summary>Retrieves the properties that might be supported on a UI Automation element.</summary>
			/// <param name="pElement">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a>*</b> The address of the UI Automation element to poll.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="propertyIds">
			/// <para>Type: <b>SAFEARRAY(int)**</b> Receives a pointer to an array of property identifiers.  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-iuiautomation-pollforpotentialsupportedproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="propertyNames">
			/// <para>Type: <b>SAFEARRAY(BSTR)**</b> Receives a pointer to an array of property names.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedproperties#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 is intended only for use by Microsoft UI Automation tools that need to scan for properties and control patterns. It is not intended to be used by UI Automation clients. There is no guarantee that the element will support any particular property when asked for it later.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-pollforpotentialsupportedproperties#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PollForPotentialSupportedProperties(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, winmdroot.System.Com.SAFEARRAY** propertyIds, winmdroot.System.Com.SAFEARRAY** propertyNames)
			{
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT>)lpVtbl[52])((IUIAutomation*)Unsafe.AsPointer(ref this), pElement, propertyIds, propertyNames).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT CheckNotSupported(IUIAutomation* pThis, winmdroot.System.Variant.VARIANT value, winmdroot.Foundation.BOOL* isNotSupported)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.CheckNotSupported(value, isNotSupported);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Checks a provided VARIANT to see if it contains the Not Supported identifier.</summary>
			/// <param name="value">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-variant">VARIANT</a></b> The value to check.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-checknotsupported#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>After retrieving a property for a UI Automation element, call this method to determine whether the element supports the retrieved property. <b>CheckNotSupported</b> is typically called after calling a property retrieving method such as <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalue">GetCurrentPropertyValue</a>.</remarks>
			public winmdroot.Foundation.BOOL CheckNotSupported(winmdroot.System.Variant.VARIANT value)
			{
				winmdroot.Foundation.BOOL __retVal = default(winmdroot.Foundation.BOOL);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Variant.VARIANT ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT>)lpVtbl[53])((IUIAutomation*)Unsafe.AsPointer(ref this), value, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_ReservedNotSupportedValue(IUIAutomation* pThis, winmdroot.System.Com.IUnknown** notSupportedValue)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*notSupportedValue = __object.ReservedNotSupportedValue;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a static token object representing a property or text attribute that is not supported.</summary>
			/// <remarks>This object can be used for comparison with the results from <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationelement-getcurrentpropertyvalue">IUIAutomationElement::GetCurrentPropertyValue</a> or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationtextrange-getattributevalue">IUIAutomationTextRange::GetAttributeValue</a>.</remarks>
			internal unsafe winmdroot.System.Com.IUnknown* ReservedNotSupportedValue
			{
				get
				{
					winmdroot.System.Com.IUnknown* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT>)lpVtbl[54])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT get_ReservedMixedAttributeValue(IUIAutomation* pThis, winmdroot.System.Com.IUnknown** mixedAttributeValue)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					*mixedAttributeValue = __object.ReservedMixedAttributeValue;
					return winmdroot.Foundation.HRESULT.S_OK;
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Retrieves a static token object representing a text attribute that is a mixed attribute.</summary>
			/// <remarks>The object retrieved by <b>IUIAutomation::ReservedMixedAttributeValue</b> can be used for comparison with the results from <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationtextrange-getattributevalue">IUIAutomationTextRange::GetAttributeValue</a> to determine if a text range contains more than one value for a particular text attribute.</remarks>
			internal unsafe winmdroot.System.Com.IUnknown* ReservedMixedAttributeValue
			{
				get
				{
					winmdroot.System.Com.IUnknown* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT>)lpVtbl[55])((IUIAutomation*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

			/// <summary>Retrieves a UI Automation element for the specified accessible object from a Microsoft Active Accessibility server.</summary>
			/// <param name="accessible">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a>*</b> A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a> interface of the accessible object.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessible#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="childId">
			/// <para>Type: <b>int</b> The child ID of the accessible object.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessible#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 enables UI Automation clients to get <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a> interfaces for accessible objects implemented by a Microsoft Active Accessibility server. This method may fail if the server implements UI Automation provider interfaces alongside Microsoft Active Accessibility support. The method returns E_INVALIDARG if the underlying implementation of the Microsoft UI Automation element is not a native Microsoft Active Accessibility server; that is, if a client attempts to retrieve the <a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a> interface for an element originally supported by a proxy object from Oleacc.dll, or by the UIA-to-MSAA Bridge.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessible#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromIAccessible(winmdroot.UI.Accessibility.IAccessible* accessible, int childId)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IAccessible* ,int ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[56])((IUIAutomation*)Unsafe.AsPointer(ref this), accessible, childId, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves a UI Automation element for the specified accessible object from a Microsoft Active Accessibility server, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</summary>
			/// <param name="accessible">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a>*</b> A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a> interface of the accessible object.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessiblebuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="childId">
			/// <para>Type: <b>int</b> The child ID of the accessible object.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessiblebuildcache#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> The address of the cache request that specifies the properties and control patterns to store in the cache.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessiblebuildcache#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 enables Microsoft UI Automation clients to get <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationelement">IUIAutomationElement</a> interfaces for accessible objects implemented by a Microsoft Active Accessibility server. This method may fail if the server implements UI Automation provider interfaces alongside Microsoft Active Accessibility support. The method returns E_INVALIDARG if the underlying implementation of the UI Automation element is not a native Microsoft Active Accessibility server; that is, if a client attempts to retrieve the <a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a> interface for an element originally supported by a proxy object from Oleacc.dll, or by the UIA-to-MSAA Bridge.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomation-elementfromiaccessiblebuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* ElementFromIAccessibleBuildCache(winmdroot.UI.Accessibility.IAccessible* accessible, int childId, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IAccessible* ,int ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[57])((IUIAutomation*)Unsafe.AsPointer(ref this), accessible, childId, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

			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]<IUIAutomation*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> QueryInterface_1;

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

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

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> CompareRuntimeIds_5;

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

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,global::System.Drawing.Point ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> ElementFromPoint_8;

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

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

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,global::System.Drawing.Point ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> ElementFromPointBuildCache_12;

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT> CreateTreeWalker_14;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT> get_ControlViewWalker_15;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT> get_ContentViewWalker_16;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationTreeWalker** ,winmdroot.Foundation.HRESULT> get_RawViewWalker_17;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> get_RawViewCondition_18;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> get_ControlViewCondition_19;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> get_ContentViewCondition_20;

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateTrueCondition_22;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateFalseCondition_23;

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.System.Variant.VARIANT ,winmdroot.UI.Accessibility.PropertyConditionFlags ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreatePropertyConditionEx_25;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateAndCondition_26;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateAndConditionFromArray_27;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,int ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateAndConditionFromNativeArray_28;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateOrCondition_29;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateOrConditionFromArray_30;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,int ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateOrConditionFromNativeArray_31;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCondition* ,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> CreateNotCondition_32;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_EVENT_ID ,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationEventHandler* ,winmdroot.Foundation.HRESULT> AddAutomationEventHandler_33;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_EVENT_ID ,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationEventHandler* ,winmdroot.Foundation.HRESULT> RemoveAutomationEventHandler_34;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* ,winmdroot.UI.Accessibility.UIA_PROPERTY_ID* ,int ,winmdroot.Foundation.HRESULT> AddPropertyChangedEventHandlerNativeArray_35;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.TreeScope ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* ,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.HRESULT> AddPropertyChangedEventHandler_36;

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

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

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

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* ,winmdroot.Foundation.HRESULT> AddFocusChangedEventHandler_40;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* ,winmdroot.Foundation.HRESULT> RemoveFocusChangedEventHandler_41;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.HRESULT> RemoveAllEventHandlers_42;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,int* ,int ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT> IntNativeArrayToSafeArray_43;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,int** ,int* ,winmdroot.Foundation.HRESULT> IntSafeArrayToNativeArray_44;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.Foundation.RECT ,winmdroot.System.Variant.VARIANT* ,winmdroot.Foundation.HRESULT> RectToVariant_45;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Variant.VARIANT ,winmdroot.Foundation.RECT* ,winmdroot.Foundation.HRESULT> VariantToRect_46;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.SAFEARRAY* ,winmdroot.Foundation.RECT** ,int* ,winmdroot.Foundation.HRESULT> SafeArrayToRectNativeArray_47;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationProxyFactory* ,winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry** ,winmdroot.Foundation.HRESULT> CreateProxyFactoryEntry_48;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationProxyFactoryMapping** ,winmdroot.Foundation.HRESULT> get_ProxyFactoryMapping_49;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PROPERTY_ID ,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> GetPropertyProgrammaticName_50;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.UIA_PATTERN_ID ,winmdroot.Foundation.BSTR* ,winmdroot.Foundation.HRESULT> GetPatternProgrammaticName_51;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT> PollForPotentialSupportedPatterns_52;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.System.Com.SAFEARRAY** ,winmdroot.Foundation.HRESULT> PollForPotentialSupportedProperties_53;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Variant.VARIANT ,winmdroot.Foundation.BOOL* ,winmdroot.Foundation.HRESULT> CheckNotSupported_54;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT> get_ReservedNotSupportedValue_55;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.System.Com.IUnknown** ,winmdroot.Foundation.HRESULT> get_ReservedMixedAttributeValue_56;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IAccessible* ,int ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> ElementFromIAccessible_57;

				internal delegate *unmanaged [Stdcall]<IUIAutomation*,winmdroot.UI.Accessibility.IAccessible* ,int ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT> ElementFromIAccessibleBuildCache_58;
			} 
			public static void PopulateVTable(Vtbl* vtable)
			{
				vtable->CompareElements_4 = &CompareElements;
				vtable->CompareRuntimeIds_5 = &CompareRuntimeIds;
				vtable->GetRootElement_6 = &GetRootElement;
				vtable->ElementFromHandle_7 = &ElementFromHandle;
				vtable->ElementFromPoint_8 = &ElementFromPoint;
				vtable->GetFocusedElement_9 = &GetFocusedElement;
				vtable->GetRootElementBuildCache_10 = &GetRootElementBuildCache;
				vtable->ElementFromHandleBuildCache_11 = &ElementFromHandleBuildCache;
				vtable->ElementFromPointBuildCache_12 = &ElementFromPointBuildCache;
				vtable->GetFocusedElementBuildCache_13 = &GetFocusedElementBuildCache;
				vtable->CreateTreeWalker_14 = &CreateTreeWalker;
				vtable->get_ControlViewWalker_15 = &get_ControlViewWalker;
				vtable->get_ContentViewWalker_16 = &get_ContentViewWalker;
				vtable->get_RawViewWalker_17 = &get_RawViewWalker;
				vtable->get_RawViewCondition_18 = &get_RawViewCondition;
				vtable->get_ControlViewCondition_19 = &get_ControlViewCondition;
				vtable->get_ContentViewCondition_20 = &get_ContentViewCondition;
				vtable->CreateCacheRequest_21 = &CreateCacheRequest;
				vtable->CreateTrueCondition_22 = &CreateTrueCondition;
				vtable->CreateFalseCondition_23 = &CreateFalseCondition;
				vtable->CreatePropertyCondition_24 = &CreatePropertyCondition;
				vtable->CreatePropertyConditionEx_25 = &CreatePropertyConditionEx;
				vtable->CreateAndCondition_26 = &CreateAndCondition;
				vtable->CreateAndConditionFromArray_27 = &CreateAndConditionFromArray;
				vtable->CreateAndConditionFromNativeArray_28 = &CreateAndConditionFromNativeArray;
				vtable->CreateOrCondition_29 = &CreateOrCondition;
				vtable->CreateOrConditionFromArray_30 = &CreateOrConditionFromArray;
				vtable->CreateOrConditionFromNativeArray_31 = &CreateOrConditionFromNativeArray;
				vtable->CreateNotCondition_32 = &CreateNotCondition;
				vtable->AddAutomationEventHandler_33 = &AddAutomationEventHandler;
				vtable->RemoveAutomationEventHandler_34 = &RemoveAutomationEventHandler;
				vtable->AddPropertyChangedEventHandlerNativeArray_35 = &AddPropertyChangedEventHandlerNativeArray;
				vtable->AddPropertyChangedEventHandler_36 = &AddPropertyChangedEventHandler;
				vtable->RemovePropertyChangedEventHandler_37 = &RemovePropertyChangedEventHandler;
				vtable->AddStructureChangedEventHandler_38 = &AddStructureChangedEventHandler;
				vtable->RemoveStructureChangedEventHandler_39 = &RemoveStructureChangedEventHandler;
				vtable->AddFocusChangedEventHandler_40 = &AddFocusChangedEventHandler;
				vtable->RemoveFocusChangedEventHandler_41 = &RemoveFocusChangedEventHandler;
				vtable->RemoveAllEventHandlers_42 = &RemoveAllEventHandlers;
				vtable->IntNativeArrayToSafeArray_43 = &IntNativeArrayToSafeArray;
				vtable->IntSafeArrayToNativeArray_44 = &IntSafeArrayToNativeArray;
				vtable->RectToVariant_45 = &RectToVariant;
				vtable->VariantToRect_46 = &VariantToRect;
				vtable->SafeArrayToRectNativeArray_47 = &SafeArrayToRectNativeArray;
				vtable->CreateProxyFactoryEntry_48 = &CreateProxyFactoryEntry;
				vtable->get_ProxyFactoryMapping_49 = &get_ProxyFactoryMapping;
				vtable->GetPropertyProgrammaticName_50 = &GetPropertyProgrammaticName;
				vtable->GetPatternProgrammaticName_51 = &GetPatternProgrammaticName;
				vtable->PollForPotentialSupportedPatterns_52 = &PollForPotentialSupportedPatterns;
				vtable->PollForPotentialSupportedProperties_53 = &PollForPotentialSupportedProperties;
				vtable->CheckNotSupported_54 = &CheckNotSupported;
				vtable->get_ReservedNotSupportedValue_55 = &get_ReservedNotSupportedValue;
				vtable->get_ReservedMixedAttributeValue_56 = &get_ReservedMixedAttributeValue;
				vtable->ElementFromIAccessible_57 = &ElementFromIAccessible;
				vtable->ElementFromIAccessibleBuildCache_58 = &ElementFromIAccessibleBuildCache;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{30cbe57d-d9d0-452a-ab13-7ac5ac4825ee}</value>
			internal static readonly Guid IID_Guid = new Guid(0x30CBE57D, 0xD9D0, 0x452A, 0xAB, 0x13, 0x7A, 0xC5, 0xAC, 0x48, 0x25, 0xEE);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0x7D,0xE5,0xCB,0x30,0xD0,0xD9,0x2A,0x45,0xAB,0x13,0x7A,0xC5,0xAC,0x48,0x25,0xEE					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("30CBE57D-D9D0-452A-AB13-7AC5AC4825EE"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),ComImport()]
			[SupportedOSPlatform("windows6.1")]
			internal interface Interface
			{
				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CompareElements(winmdroot.UI.Accessibility.IUIAutomationElement* el1, winmdroot.UI.Accessibility.IUIAutomationElement* el2, winmdroot.Foundation.BOOL* areSame);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CompareRuntimeIds(winmdroot.System.Com.SAFEARRAY* runtimeId1, winmdroot.System.Com.SAFEARRAY* runtimeId2, winmdroot.Foundation.BOOL* areSame);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetRootElement(winmdroot.UI.Accessibility.IUIAutomationElement** root);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromHandle(winmdroot.Foundation.HWND hwnd, winmdroot.UI.Accessibility.IUIAutomationElement** element);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromPoint(global::System.Drawing.Point pt, winmdroot.UI.Accessibility.IUIAutomationElement** element);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetFocusedElement(winmdroot.UI.Accessibility.IUIAutomationElement** element);

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

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromHandleBuildCache(winmdroot.Foundation.HWND hwnd, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** element);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromPointBuildCache(global::System.Drawing.Point pt, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** element);

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

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateTreeWalker(winmdroot.UI.Accessibility.IUIAutomationCondition* pCondition, winmdroot.UI.Accessibility.IUIAutomationTreeWalker** walker);

				unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* ControlViewWalker
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* ContentViewWalker
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationTreeWalker* RawViewWalker
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* RawViewCondition
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* ControlViewCondition
				{
					get;
				}

				unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* ContentViewCondition
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateCacheRequest(winmdroot.UI.Accessibility.IUIAutomationCacheRequest** cacheRequest);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateTrueCondition(winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateFalseCondition(winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreatePropertyCondition(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT value, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreatePropertyConditionEx(winmdroot.UI.Accessibility.UIA_PROPERTY_ID propertyId, winmdroot.System.Variant.VARIANT value, winmdroot.UI.Accessibility.PropertyConditionFlags flags, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateAndCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition1, winmdroot.UI.Accessibility.IUIAutomationCondition* condition2, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateAndConditionFromArray(winmdroot.System.Com.SAFEARRAY* conditions, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateAndConditionFromNativeArray(winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateOrCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition1, winmdroot.UI.Accessibility.IUIAutomationCondition* condition2, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateOrConditionFromArray(winmdroot.System.Com.SAFEARRAY* conditions, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateOrConditionFromNativeArray(winmdroot.UI.Accessibility.IUIAutomationCondition** conditions, int conditionCount, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateNotCondition(winmdroot.UI.Accessibility.IUIAutomationCondition* condition, winmdroot.UI.Accessibility.IUIAutomationCondition** newCondition);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT AddAutomationEventHandler(winmdroot.UI.Accessibility.UIA_EVENT_ID eventId, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT RemoveAutomationEventHandler(winmdroot.UI.Accessibility.UIA_EVENT_ID eventId, winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT AddPropertyChangedEventHandlerNativeArray(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.UI.Accessibility.UIA_PROPERTY_ID* propertyArray, int propertyCount);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT AddPropertyChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler, winmdroot.System.Com.SAFEARRAY* propertyArray);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT RemovePropertyChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationPropertyChangedEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT AddStructureChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.TreeScope scope, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT RemoveStructureChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationStructureChangedEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT AddFocusChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* handler);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT RemoveFocusChangedEventHandler(winmdroot.UI.Accessibility.IUIAutomationFocusChangedEventHandler* handler);

								[PreserveSig()]
winmdroot.Foundation.HRESULT RemoveAllEventHandlers();

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT IntNativeArrayToSafeArray(int* array, int arrayCount, winmdroot.System.Com.SAFEARRAY** safeArray);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT IntSafeArrayToNativeArray(winmdroot.System.Com.SAFEARRAY* intArray, int** array, int* arrayCount);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT RectToVariant(winmdroot.Foundation.RECT rc, winmdroot.System.Variant.VARIANT* var);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT VariantToRect(winmdroot.System.Variant.VARIANT var, winmdroot.Foundation.RECT* rc);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT SafeArrayToRectNativeArray(winmdroot.System.Com.SAFEARRAY* rects, winmdroot.Foundation.RECT** rectArray, int* rectArrayCount);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CreateProxyFactoryEntry(winmdroot.UI.Accessibility.IUIAutomationProxyFactory* factory, winmdroot.UI.Accessibility.IUIAutomationProxyFactoryEntry** factoryEntry);

				unsafe winmdroot.UI.Accessibility.IUIAutomationProxyFactoryMapping* ProxyFactoryMapping
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetPropertyProgrammaticName(winmdroot.UI.Accessibility.UIA_PROPERTY_ID property, winmdroot.Foundation.BSTR* name);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetPatternProgrammaticName(winmdroot.UI.Accessibility.UIA_PATTERN_ID pattern, winmdroot.Foundation.BSTR* name);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PollForPotentialSupportedPatterns(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, winmdroot.System.Com.SAFEARRAY** patternIds, winmdroot.System.Com.SAFEARRAY** patternNames);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PollForPotentialSupportedProperties(winmdroot.UI.Accessibility.IUIAutomationElement* pElement, winmdroot.System.Com.SAFEARRAY** propertyIds, winmdroot.System.Com.SAFEARRAY** propertyNames);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT CheckNotSupported(winmdroot.System.Variant.VARIANT value, winmdroot.Foundation.BOOL* isNotSupported);

				unsafe winmdroot.System.Com.IUnknown* ReservedNotSupportedValue
				{
					get;
				}

				unsafe winmdroot.System.Com.IUnknown* ReservedMixedAttributeValue
				{
					get;
				}

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromIAccessible(winmdroot.UI.Accessibility.IAccessible* accessible, int childId, winmdroot.UI.Accessibility.IUIAutomationElement** element);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ElementFromIAccessibleBuildCache(winmdroot.UI.Accessibility.IAccessible* accessible, int childId, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest, winmdroot.UI.Accessibility.IUIAutomationElement** element);
			}
		}
	}
}