File: Windows.Win32.IUIAutomationTreeWalker.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("4042C624-389C-4AFC-A630-9DF854A541FC")]
		[SupportedOSPlatform("windows6.1")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IUIAutomationTreeWalker
			:IVTable<IUIAutomationTreeWalker,IUIAutomationTreeWalker.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]<IUIAutomationTreeWalker*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

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

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

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

			/// <summary>Retrieves the parent element of the specified UI Automation element.</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 element for which to retrieve the parent.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getparentelement#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 structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the  parent element will be returned as the parent on subsequent passes.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetParentElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the first child element of the specified UI Automation element.</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 element for which to retrieve the first child.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getfirstchildelement#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>An element can have additional child elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the first child element will be returned as the first child on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getfirstchildelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetFirstChildElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the last child element of the specified UI Automation element.</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 element for which to retrieve the last child.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getlastchildelement#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>An element can have additional child elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the last child element will be returned as the last child on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getlastchildelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetLastChildElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the next sibling element of the specified UI Automation element.</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 element for which to retrieve the next sibling.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getnextsiblingelement#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>An element can have additional sibling elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the next sibling element will be returned as the next sibling on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getnextsiblingelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetNextSiblingElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the previous sibling element of the specified UI Automation element.</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 element for which to retrieve the previous sibling.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getprevioussiblingelement#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>An element can have additional sibling elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the previous sibling element will be returned as the previous sibling on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getprevioussiblingelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetPreviousSiblingElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the ancestor element nearest to the specified Microsoft UI Automation element in the tree view.</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 element from which to start the normalization.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelement#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 element is normalized by navigating up the ancestor chain in the tree until an element that satisfies the view condition (specified by a previous call to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-get_condition">IUIAutomationTreeWalker::Condition</a>) is reached. But first, the passed element is tested to see if it matches a normalization condition. If so, the passed element is returned, even though it is not an ancestor. The method returns <b>UIA_E_ELEMENTNOTAVAILABLE</b> if no matching element has been found. This method is useful for applications that obtain references to UI Automation elements by hit-testing. The application might want to work only with specific types of elements, and can use <b>IUIAutomationTreeWalker::Normalize</b> to make sure that no matter what element is initially retrieved (for example, when a scroll bar gets the input focus), only the element of interest (such as a content element) is ultimately retrieved.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelement#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* NormalizeElement(winmdroot.UI.Accessibility.IUIAutomationElement* element)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the parent element of the specified UI Automation element, and caches properties and control patterns.</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 element for which to retrieve the parent.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getparentelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getparentelementbuildcache#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 structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the  parent element will be returned as the parent on subsequent passes.</remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetParentElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the first child element of the specified UI Automation element, and caches properties and control patterns.</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 element for which to retrieve the first child.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getfirstchildelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to  a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getfirstchildelementbuildcache#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>An element can have additional child elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the first child element will be returned as the first child on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getfirstchildelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetFirstChildElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the last child element of the specified UI Automation element, and caches properties and control patterns.</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 element for which to retrieve the last child.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getlastchildelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getlastchildelementbuildcache#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>An element can have additional child elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the last child element will be returned as the last child on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getlastchildelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetLastChildElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the next sibling element of the specified UI Automation element, and caches properties and control patterns.</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 element for which to retrieve the next sibling.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getnextsiblingelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getnextsiblingelementbuildcache#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>An element can have additional sibling elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the next sibling element will be returned as the next sibling on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getnextsiblingelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetNextSiblingElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the previous sibling element of the specified UI Automation element, and caches properties and control patterns.</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 element for which to retrieve the previous sibling.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getprevioussiblingelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getprevioussiblingelementbuildcache#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>An element can have additional sibling elements that do not match the current view condition and thus are not returned when navigating the element tree. The structure of the Microsoft UI Automation tree changes as the visible UI elements on the desktop change. It is not guaranteed that an element returned as the previous sibling element will be returned as the previous sibling on subsequent passes.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-getprevioussiblingelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* GetPreviousSiblingElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the ancestor element nearest to the specified Microsoft UI Automation element in the tree view, prefetches the requested properties and control patterns, and stores the prefetched items in the cache.</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 element from which to start the normalization.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelementbuildcache#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="cacheRequest">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nn-uiautomationclient-iuiautomationcacherequest">IUIAutomationCacheRequest</a>*</b> A pointer to a cache request that specifies the properties and control patterns to cache on the returned element.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelementbuildcache#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 element is normalized by navigating up the ancestor chain in the tree until an element that satisfies the view condition (specified by a previous call to <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-get_condition">IUIAutomationTreeWalker::Condition</a>) is reached. If the root element is reached, the root element is returned, even if it does not satisfy the view condition.</para>
			/// <para>This method is useful for applications that obtain references to UI Automation elements by hit-testing. The application might want to work only with specific types of elements, and can use <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelement">IUIAutomationTreeWalker::NormalizeElement</a> to make sure that no matter what element is initially retrieved (for example, when a scroll bar gets the input focus), only the element of interest (such as a content element) is ultimately retrieved.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-normalizeelementbuildcache#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.UI.Accessibility.IUIAutomationElement* NormalizeElementBuildCache(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationCacheRequest* cacheRequest)
			{
				winmdroot.UI.Accessibility.IUIAutomationElement* __retVal = default(winmdroot.UI.Accessibility.IUIAutomationElement*);
				((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationElement* ,winmdroot.UI.Accessibility.IUIAutomationCacheRequest* ,winmdroot.UI.Accessibility.IUIAutomationElement** ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), element, cacheRequest, &__retVal).ThrowOnFailure();
				return __retVal;
			}

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

			/// <summary>Retrieves the condition that defines the view of the UI Automation tree.</summary>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationtreewalker-get_condition">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			internal unsafe winmdroot.UI.Accessibility.IUIAutomationCondition* Condition
			{
				get
				{
					winmdroot.UI.Accessibility.IUIAutomationCondition* __result;
					((delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IUIAutomationTreeWalker*)Unsafe.AsPointer(ref this), &__result).ThrowOnFailure();
					return __result;
				}
			}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

				internal delegate *unmanaged [Stdcall]<IUIAutomationTreeWalker*,winmdroot.UI.Accessibility.IUIAutomationCondition** ,winmdroot.Foundation.HRESULT> get_Condition_16;
			} 
			public static void PopulateVTable(Vtbl* vtable)
			{
				vtable->GetParentElement_4 = &GetParentElement;
				vtable->GetFirstChildElement_5 = &GetFirstChildElement;
				vtable->GetLastChildElement_6 = &GetLastChildElement;
				vtable->GetNextSiblingElement_7 = &GetNextSiblingElement;
				vtable->GetPreviousSiblingElement_8 = &GetPreviousSiblingElement;
				vtable->NormalizeElement_9 = &NormalizeElement;
				vtable->GetParentElementBuildCache_10 = &GetParentElementBuildCache;
				vtable->GetFirstChildElementBuildCache_11 = &GetFirstChildElementBuildCache;
				vtable->GetLastChildElementBuildCache_12 = &GetLastChildElementBuildCache;
				vtable->GetNextSiblingElementBuildCache_13 = &GetNextSiblingElementBuildCache;
				vtable->GetPreviousSiblingElementBuildCache_14 = &GetPreviousSiblingElementBuildCache;
				vtable->NormalizeElementBuildCache_15 = &NormalizeElementBuildCache;
				vtable->get_Condition_16 = &get_Condition;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{4042c624-389c-4afc-a630-9df854a541fc}</value>
			internal static readonly Guid IID_Guid = new Guid(0x4042C624, 0x389C, 0x4AFC, 0xA6, 0x30, 0x9D, 0xF8, 0x54, 0xA5, 0x41, 0xFC);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0x24,0xC6,0x42,0x40,0x9C,0x38,0xFC,0x4A,0xA6,0x30,0x9D,0xF8,0x54,0xA5,0x41,0xFC					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("4042C624-389C-4AFC-A630-9DF854A541FC"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),ComImport()]
			[SupportedOSPlatform("windows6.1")]
			internal interface Interface
			{
				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetParentElement(winmdroot.UI.Accessibility.IUIAutomationElement* element, winmdroot.UI.Accessibility.IUIAutomationElement** parent);

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

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

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

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

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

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

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

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

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

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

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

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