// C++/WinRT v2.0.250303.1

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#pragma once
#ifndef WINRT_Windows_UI_Xaml_Automation_Peers_H
#define WINRT_Windows_UI_Xaml_Automation_Peers_H
#include "winrt/base.h"
static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.250303.1"), "Mismatched C++/WinRT headers.");
#define CPPWINRT_VERSION "2.0.250303.1"
#include "winrt/Windows.UI.Xaml.Automation.h"
#include "winrt/impl/Windows.Foundation.2.h"
#include "winrt/impl/Windows.Foundation.Collections.2.h"
#include "winrt/impl/Windows.UI.Xaml.2.h"
#include "winrt/impl/Windows.UI.Xaml.Automation.2.h"
#include "winrt/impl/Windows.UI.Xaml.Automation.Provider.2.h"
#include "winrt/impl/Windows.UI.Xaml.Controls.2.h"
#include "winrt/impl/Windows.UI.Xaml.Controls.Primitives.2.h"
#include "winrt/impl/Windows.UI.Xaml.Automation.Peers.2.h"
namespace winrt::impl
{
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAppBarAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::AppBar const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AppBarAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAppBarButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::AppBarButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AppBarButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAppBarToggleButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::AppBarToggleButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AppBarToggleButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutoSuggestBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::AutoSuggestBox const& owner) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutoSuggestBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::EventsSource() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_EventsSource(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->get_EventsSource(&value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::EventsSource(winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_EventsSource(*(void**)(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->put_EventsSource(*(void**)(&value)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetPattern(winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const& patternInterface) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPattern(static_cast<int32_t>(patternInterface), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetPattern(static_cast<int32_t>(patternInterface), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::RaiseAutomationEvent(winrt::Windows::UI::Xaml::Automation::Peers::AutomationEvents const& eventId) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RaiseAutomationEvent(static_cast<int32_t>(eventId)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->RaiseAutomationEvent(static_cast<int32_t>(eventId)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::RaisePropertyChangedEvent(winrt::Windows::UI::Xaml::Automation::AutomationProperty const& automationProperty, winrt::Windows::Foundation::IInspectable const& oldValue, winrt::Windows::Foundation::IInspectable const& newValue) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RaisePropertyChangedEvent(*(void**)(&automationProperty), *(void**)(&oldValue), *(void**)(&newValue)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->RaisePropertyChangedEvent(*(void**)(&automationProperty), *(void**)(&oldValue), *(void**)(&newValue)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetAcceleratorKey() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAcceleratorKey(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetAcceleratorKey(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetAccessKey() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAccessKey(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetAccessKey(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetAutomationControlType() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationControlType result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAutomationControlType(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetAutomationControlType(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetAutomationId() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAutomationId(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetAutomationId(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetBoundingRectangle() const
    {
        winrt::Windows::Foundation::Rect result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetBoundingRectangle(put_abi(result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetBoundingRectangle(put_abi(result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetChildren() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetChildren(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetChildren(&result));
        }
        return winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetClassName() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetClassName(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetClassName(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetClickablePoint() const
    {
        winrt::Windows::Foundation::Point result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetClickablePoint(put_abi(result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetClickablePoint(put_abi(result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetHelpText() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetHelpText(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetHelpText(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetItemStatus() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetItemStatus(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetItemStatus(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetItemType() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetItemType(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetItemType(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetLabeledBy() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLabeledBy(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetLabeledBy(&result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetLocalizedControlType() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLocalizedControlType(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetLocalizedControlType(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetName() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetName(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetName(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetOrientation() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationOrientation result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetOrientation(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetOrientation(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::HasKeyboardFocus() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->HasKeyboardFocus(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->HasKeyboardFocus(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsContentElement() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsContentElement(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsContentElement(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsControlElement() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsControlElement(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsControlElement(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsEnabled() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsEnabled(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsEnabled(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsKeyboardFocusable() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsKeyboardFocusable(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsKeyboardFocusable(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsOffscreen() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsOffscreen(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsOffscreen(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsPassword() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsPassword(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsPassword(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::IsRequiredForForm() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsRequiredForForm(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->IsRequiredForForm(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::SetFocus() const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->SetFocus());
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->SetFocus());
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetParent() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetParent(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetParent(&result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::InvalidatePeer() const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->InvalidatePeer());
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->InvalidatePeer());
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetPeerFromPoint(winrt::Windows::Foundation::Point const& point) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPeerFromPoint(impl::bind_in(point), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetPeerFromPoint(impl::bind_in(point), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer<D>::GetLiveSetting() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationLiveSetting result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLiveSetting(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->GetLiveSetting(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::Navigate(winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const& direction) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->Navigate(static_cast<int32_t>(direction), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->Navigate(static_cast<int32_t>(direction), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetElementFromPoint(winrt::Windows::Foundation::Point const& pointInWindowCoordinates) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetElementFromPoint(impl::bind_in(pointInWindowCoordinates), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetElementFromPoint(impl::bind_in(pointInWindowCoordinates), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetFocusedElement() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFocusedElement(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetFocusedElement(&result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::ShowContextMenu() const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->ShowContextMenu());
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->ShowContextMenu());
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetControlledPeers() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetControlledPeers(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetControlledPeers(&result));
        }
        return winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetAnnotations() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAnnotations(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetAnnotations(&result));
        }
        return winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::SetParent(winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& peer) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->SetParent(*(void**)(&peer)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->SetParent(*(void**)(&peer)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::RaiseTextEditTextChangedEvent(winrt::Windows::UI::Xaml::Automation::AutomationTextEditChangeType const& automationTextEditChangeType, param::vector_view<hstring> const& changedData) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RaiseTextEditTextChangedEvent(static_cast<int32_t>(automationTextEditChangeType), *(void**)(&changedData)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->RaiseTextEditTextChangedEvent(static_cast<int32_t>(automationTextEditChangeType), *(void**)(&changedData)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetPositionInSet() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPositionInSet(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetPositionInSet(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetSizeOfSet() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetSizeOfSet(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetSizeOfSet(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::GetLevel() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLevel(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->GetLevel(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer3<D>::RaiseStructureChangedEvent(winrt::Windows::UI::Xaml::Automation::Peers::AutomationStructureChangeType const& structureChangeType, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& child) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RaiseStructureChangedEvent(static_cast<int32_t>(structureChangeType), *(void**)(&child)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>**)this;
            check_hresult(_winrt_abi_type->RaiseStructureChangedEvent(static_cast<int32_t>(structureChangeType), *(void**)(&child)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer4<D>::GetLandmarkType() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationLandmarkType result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLandmarkType(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>**)this;
            check_hresult(_winrt_abi_type->GetLandmarkType(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer4<D>::GetLocalizedLandmarkType() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLocalizedLandmarkType(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>**)this;
            check_hresult(_winrt_abi_type->GetLocalizedLandmarkType(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer5<D>::IsPeripheral() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsPeripheral(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)this;
            check_hresult(_winrt_abi_type->IsPeripheral(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer5<D>::IsDataValidForForm() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsDataValidForForm(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)this;
            check_hresult(_winrt_abi_type->IsDataValidForForm(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer5<D>::GetFullDescription() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFullDescription(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>**)this;
            check_hresult(_winrt_abi_type->GetFullDescription(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer6<D>::GetCulture() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetCulture(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6>**)this;
            check_hresult(_winrt_abi_type->GetCulture(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer7<D>::RaiseNotificationEvent(winrt::Windows::UI::Xaml::Automation::Peers::AutomationNotificationKind const& notificationKind, winrt::Windows::UI::Xaml::Automation::Peers::AutomationNotificationProcessing const& notificationProcessing, param::hstring const& displayString, param::hstring const& activityId) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RaiseNotificationEvent(static_cast<int32_t>(notificationKind), static_cast<int32_t>(notificationProcessing), *(void**)(&displayString), *(void**)(&activityId)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7>**)this;
            check_hresult(_winrt_abi_type->RaiseNotificationEvent(static_cast<int32_t>(notificationKind), static_cast<int32_t>(notificationProcessing), *(void**)(&displayString), *(void**)(&activityId)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer8<D>::GetHeadingLevel() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationHeadingLevel result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetHeadingLevel(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8>**)this;
            check_hresult(_winrt_abi_type->GetHeadingLevel(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeer9<D>::IsDialog() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsDialog(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9>**)this;
            check_hresult(_winrt_abi_type->IsDialog(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotation<D>::Type() const
    {
        winrt::Windows::UI::Xaml::Automation::AnnotationType value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Type(reinterpret_cast<int32_t*>(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)this;
            check_hresult(_winrt_abi_type->get_Type(reinterpret_cast<int32_t*>(&value)));
        }
        return value;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotation<D>::Type(winrt::Windows::UI::Xaml::Automation::AnnotationType const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_Type(static_cast<int32_t>(value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)this;
            check_hresult(_winrt_abi_type->put_Type(static_cast<int32_t>(value)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotation<D>::Peer() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Peer(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)this;
            check_hresult(_winrt_abi_type->get_Peer(&value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotation<D>::Peer(winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_Peer(*(void**)(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>**)this;
            check_hresult(_winrt_abi_type->put_Peer(*(void**)(&value)));
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotationFactory<D>::CreateInstance(winrt::Windows::UI::Xaml::Automation::AnnotationType const& type) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstance(static_cast<int32_t>(type), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstance(static_cast<int32_t>(type), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotationFactory<D>::CreateWithPeerParameter(winrt::Windows::UI::Xaml::Automation::AnnotationType const& type, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& peer) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithPeerParameter(static_cast<int32_t>(type), *(void**)(&peer), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithPeerParameter(static_cast<int32_t>(type), *(void**)(&peer), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotationStatics<D>::TypeProperty() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_TypeProperty(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>**)this;
            check_hresult(_winrt_abi_type->get_TypeProperty(&value));
        }
        return winrt::Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerAnnotationStatics<D>::PeerProperty() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_PeerProperty(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>**)this;
            check_hresult(_winrt_abi_type->get_PeerProperty(&value));
        }
        return winrt::Windows::UI::Xaml::DependencyProperty{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerFactory<D>::CreateInstance(winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetPatternCore(winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const& patternInterface) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPatternCore(static_cast<int32_t>(patternInterface), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetPatternCore(static_cast<int32_t>(patternInterface), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetAcceleratorKeyCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAcceleratorKeyCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetAcceleratorKeyCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetAccessKeyCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAccessKeyCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetAccessKeyCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetAutomationControlTypeCore() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationControlType result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAutomationControlTypeCore(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetAutomationControlTypeCore(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetAutomationIdCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAutomationIdCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetAutomationIdCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetBoundingRectangleCore() const
    {
        winrt::Windows::Foundation::Rect result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetBoundingRectangleCore(put_abi(result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetBoundingRectangleCore(put_abi(result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetChildrenCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetChildrenCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetChildrenCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetClassNameCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetClassNameCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetClassNameCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetClickablePointCore() const
    {
        winrt::Windows::Foundation::Point result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetClickablePointCore(put_abi(result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetClickablePointCore(put_abi(result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetHelpTextCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetHelpTextCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetHelpTextCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetItemStatusCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetItemStatusCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetItemStatusCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetItemTypeCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetItemTypeCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetItemTypeCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetLabeledByCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLabeledByCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetLabeledByCore(&result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetLocalizedControlTypeCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLocalizedControlTypeCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetLocalizedControlTypeCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetNameCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetNameCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetNameCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetOrientationCore() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationOrientation result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetOrientationCore(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetOrientationCore(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::HasKeyboardFocusCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->HasKeyboardFocusCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->HasKeyboardFocusCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsContentElementCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsContentElementCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsContentElementCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsControlElementCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsControlElementCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsControlElementCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsEnabledCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsEnabledCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsEnabledCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsKeyboardFocusableCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsKeyboardFocusableCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsKeyboardFocusableCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsOffscreenCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsOffscreenCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsOffscreenCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsPasswordCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsPasswordCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsPasswordCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::IsRequiredForFormCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsRequiredForFormCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->IsRequiredForFormCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::SetFocusCore() const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->SetFocusCore());
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->SetFocusCore());
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetPeerFromPointCore(winrt::Windows::Foundation::Point const& point) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPeerFromPointCore(impl::bind_in(point), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetPeerFromPointCore(impl::bind_in(point), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides<D>::GetLiveSettingCore() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationLiveSetting result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLiveSettingCore(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>**)this;
            check_hresult(_winrt_abi_type->GetLiveSettingCore(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides2<D>::ShowContextMenuCore() const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->ShowContextMenuCore());
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>**)this;
            check_hresult(_winrt_abi_type->ShowContextMenuCore());
        }
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides2<D>::GetControlledPeersCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetControlledPeersCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>**)this;
            check_hresult(_winrt_abi_type->GetControlledPeersCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::NavigateCore(winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const& direction) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->NavigateCore(static_cast<int32_t>(direction), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->NavigateCore(static_cast<int32_t>(direction), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetElementFromPointCore(winrt::Windows::Foundation::Point const& pointInWindowCoordinates) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetElementFromPointCore(impl::bind_in(pointInWindowCoordinates), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetElementFromPointCore(impl::bind_in(pointInWindowCoordinates), &result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetFocusedElementCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFocusedElementCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetFocusedElementCore(&result));
        }
        return winrt::Windows::Foundation::IInspectable{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetAnnotationsCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetAnnotationsCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetAnnotationsCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetPositionInSetCore() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetPositionInSetCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetPositionInSetCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetSizeOfSetCore() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetSizeOfSetCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetSizeOfSetCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides3<D>::GetLevelCore() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLevelCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>**)this;
            check_hresult(_winrt_abi_type->GetLevelCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides4<D>::GetLandmarkTypeCore() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationLandmarkType result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLandmarkTypeCore(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>**)this;
            check_hresult(_winrt_abi_type->GetLandmarkTypeCore(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides4<D>::GetLocalizedLandmarkTypeCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetLocalizedLandmarkTypeCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>**)this;
            check_hresult(_winrt_abi_type->GetLocalizedLandmarkTypeCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::IsPeripheralCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsPeripheralCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->IsPeripheralCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::IsDataValidForFormCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsDataValidForFormCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->IsDataValidForFormCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::GetFullDescriptionCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFullDescriptionCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->GetFullDescriptionCore(&result));
        }
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::GetDescribedByCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetDescribedByCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->GetDescribedByCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::GetFlowsToCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFlowsToCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->GetFlowsToCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides5<D>::GetFlowsFromCore() const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetFlowsFromCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>**)this;
            check_hresult(_winrt_abi_type->GetFlowsFromCore(&result));
        }
        return winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides6<D>::GetCultureCore() const
    {
        int32_t result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetCultureCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>**)this;
            check_hresult(_winrt_abi_type->GetCultureCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides8<D>::GetHeadingLevelCore() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::AutomationHeadingLevel result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetHeadingLevelCore(reinterpret_cast<int32_t*>(&result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>**)this;
            check_hresult(_winrt_abi_type->GetHeadingLevelCore(reinterpret_cast<int32_t*>(&result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerOverrides9<D>::IsDialogCore() const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->IsDialogCore(&result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>**)this;
            check_hresult(_winrt_abi_type->IsDialogCore(&result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerProtected<D>::PeerFromProvider(winrt::Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple const& provider) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->PeerFromProvider(*(void**)(&provider), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>**)this;
            check_hresult(_winrt_abi_type->PeerFromProvider(*(void**)(&provider), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerProtected<D>::ProviderFromPeer(winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& peer) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->ProviderFromPeer(*(void**)(&peer), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>**)this;
            check_hresult(_winrt_abi_type->ProviderFromPeer(*(void**)(&peer), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerStatics<D>::ListenerExists(winrt::Windows::UI::Xaml::Automation::Peers::AutomationEvents const& eventId) const
    {
        bool result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->ListenerExists(static_cast<int32_t>(eventId), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics>**)this;
            check_hresult(_winrt_abi_type->ListenerExists(static_cast<int32_t>(eventId), &result));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IAutomationPeerStatics3<D>::GenerateRawElementProviderRuntimeId() const
    {
        winrt::Windows::UI::Xaml::Automation::Peers::RawElementProviderRuntimeId result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GenerateRawElementProviderRuntimeId(put_abi(result)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3>**)this;
            check_hresult(_winrt_abi_type->GenerateRawElementProviderRuntimeId(put_abi(result)));
        }
        return result;
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Button const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IButtonBaseAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::ButtonBase const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ICalendarDatePickerAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::CalendarDatePicker const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::CalendarDatePickerAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ICaptureElementAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::CaptureElement const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::CaptureElementAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ICheckBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::CheckBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::CheckBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IColorPickerSliderAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::ColorPickerSlider const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ColorPickerSliderAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IColorSpectrumAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::ColorSpectrum const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ColorSpectrumAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IComboBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ComboBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IComboBoxItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ComboBoxItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IComboBoxItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IDatePickerAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::DatePicker const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::DatePickerAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFlipViewAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::FlipView const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFlipViewItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::FlipViewItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFlipViewItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFlyoutPresenterAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::FlyoutPresenter const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::FlyoutPresenterAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFrameworkElementAutomationPeer<D>::Owner() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Owner(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->get_Owner(&value));
        }
        return winrt::Windows::UI::Xaml::UIElement{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFrameworkElementAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::FrameworkElement const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFrameworkElementAutomationPeerStatics<D>::FromElement(winrt::Windows::UI::Xaml::UIElement const& element) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FromElement(*(void**)(&element), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>**)this;
            check_hresult(_winrt_abi_type->FromElement(*(void**)(&element), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IFrameworkElementAutomationPeerStatics<D>::CreatePeerForElement(winrt::Windows::UI::Xaml::UIElement const& element) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreatePeerForElement(*(void**)(&element), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>**)this;
            check_hresult(_winrt_abi_type->CreatePeerForElement(*(void**)(&element), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IGridViewAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::GridView const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IGridViewHeaderItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::GridViewHeaderItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::GridViewHeaderItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IGridViewItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::GridViewItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IGridViewItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IGroupItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::GroupItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::GroupItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IHubAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Hub const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::HubAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IHubSectionAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::HubSection const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::HubSectionAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IHyperlinkButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::HyperlinkButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::HyperlinkButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IImageAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Image const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ImageAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemAutomationPeer<D>::Item() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Item(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->get_Item(&value));
        }
        return winrt::Windows::Foundation::IInspectable{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemAutomationPeer<D>::ItemsControlAutomationPeer() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ItemsControlAutomationPeer(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>**)this;
            check_hresult(_winrt_abi_type->get_ItemsControlAutomationPeer(&value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemsControlAutomationPeer2<D>::CreateItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateItemAutomationPeer(*(void**)(&item), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2>**)this;
            check_hresult(_winrt_abi_type->CreateItemAutomationPeer(*(void**)(&item), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemsControlAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ItemsControl const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IItemsControlAutomationPeerOverrides2<D>::OnCreateItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->OnCreateItemAutomationPeer(*(void**)(&item), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>**)this;
            check_hresult(_winrt_abi_type->OnCreateItemAutomationPeer(*(void**)(&item), &result));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListBoxItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListBoxItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListBoxItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListView const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewBaseAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListViewBase const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewBaseHeaderItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseHeaderItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewHeaderItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListViewHeaderItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewHeaderItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ListViewItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IListViewItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMediaElementAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::MediaElement const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MediaElementAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMediaPlayerElementAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::MediaPlayerElement const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MediaPlayerElementAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMediaTransportControlsAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::MediaTransportControls const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MediaTransportControlsAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMenuBarAutomationPeerFactory<D>::CreateInstance(winrt::Windows::UI::Xaml::Controls::MenuBar const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MenuBarAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMenuBarItemAutomationPeerFactory<D>::CreateInstance(winrt::Windows::UI::Xaml::Controls::MenuBarItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstance(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MenuBarItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMenuFlyoutItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::MenuFlyoutItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IMenuFlyoutPresenterAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::MenuFlyoutPresenter const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutPresenterAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_INavigationViewItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::NavigationViewItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::NavigationViewItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IPasswordBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::PasswordBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::PasswordBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IPersonPictureAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::PersonPicture const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::PersonPictureAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IPivotAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Pivot const& owner) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IPivotItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::PivotItem const& owner) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::PivotItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IPivotItemDataAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer const& parent) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::PivotItemDataAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IProgressBarAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ProgressBar const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ProgressBarAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IProgressRingAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ProgressRing const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ProgressRingAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRadioButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::RadioButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RadioButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRangeBaseAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::RangeBase const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRatingControlAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::RatingControl const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RatingControlAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRepeatButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::RepeatButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RepeatButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRichEditBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::RichEditBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RichEditBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRichTextBlockAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::RichTextBlock const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IRichTextBlockOverflowAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::RichTextBlockOverflow const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockOverflowAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IScrollBarAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::ScrollBar const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ScrollBarAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IScrollViewerAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ScrollViewer const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ScrollViewerAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISearchBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::SearchBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SearchBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISelectorAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::Selector const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISelectorItemAutomationPeerFactory<D>::CreateInstanceWithParentAndItem(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer const& parent, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithParentAndItem(*(void**)(&item), *(void**)(&parent), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISemanticZoomAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::SemanticZoom const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SemanticZoomAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISettingsFlyoutAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::SettingsFlyout const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SettingsFlyoutAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ISliderAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Slider const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::SliderAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ITextBlockAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::TextBlock const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::TextBlockAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ITextBoxAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::TextBox const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::TextBoxAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IThumbAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::Thumb const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ThumbAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ITimePickerAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::TimePicker const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::TimePickerAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IToggleButtonAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::Primitives::ToggleButton const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IToggleMenuFlyoutItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ToggleMenuFlyoutItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_IToggleSwitchAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::ToggleSwitch const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::ToggleSwitchAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ITreeViewItemAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::TreeViewItem const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::TreeViewItemAutomationPeer{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Xaml_Automation_Peers_ITreeViewListAutomationPeerFactory<D>::CreateInstanceWithOwner(winrt::Windows::UI::Xaml::Controls::TreeViewList const& owner, winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory>**)this;
            check_hresult(_winrt_abi_type->CreateInstanceWithOwner(*(void**)(&owner), *(void**)(&baseInterface), impl::bind_out(innerInterface), &value));
        }
        return winrt::Windows::UI::Xaml::Automation::Peers::TreeViewListAutomationPeer{ value, take_ownership_from_abi };
    }
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AppBarAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::AppBar const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AppBarButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::AppBarButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AppBarToggleButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::AppBarToggleButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutoSuggestBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::AutoSuggestBox const*>(&owner)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer>
    {
        int32_t __stdcall get_EventsSource(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().EventsSource());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_EventsSource(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().EventsSource(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPattern(int32_t patternInterface, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetPattern(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const*>(&patternInterface)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RaiseAutomationEvent(int32_t eventId) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RaiseAutomationEvent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationEvents const*>(&eventId));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RaisePropertyChangedEvent(void* automationProperty, void* oldValue, void* newValue) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RaisePropertyChangedEvent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::AutomationProperty const*>(&automationProperty), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&oldValue), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&newValue));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAcceleratorKey(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAcceleratorKey());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAccessKey(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAccessKey());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAutomationControlType(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationControlType>(this->shim().GetAutomationControlType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAutomationId(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAutomationId());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetBoundingRectangle(winrt::Windows::Foundation::Rect* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Rect>(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Rect>(this->shim().GetBoundingRectangle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetChildren(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetChildren());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetClassName(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetClassName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetClickablePoint(winrt::Windows::Foundation::Point* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Point>(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Point>(this->shim().GetClickablePoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetHelpText(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetHelpText());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetItemStatus(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetItemStatus());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetItemType(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetItemType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLabeledBy(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().GetLabeledBy());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLocalizedControlType(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetLocalizedControlType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetName(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetOrientation(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationOrientation>(this->shim().GetOrientation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall HasKeyboardFocus(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().HasKeyboardFocus());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsContentElement(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsContentElement());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsControlElement(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsControlElement());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsEnabled(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsEnabled());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsKeyboardFocusable(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsKeyboardFocusable());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsOffscreen(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsOffscreen());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsPassword(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsPassword());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsRequiredForForm(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsRequiredForForm());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SetFocus() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetFocus();
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetParent(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().GetParent());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall InvalidatePeer() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InvalidatePeer();
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPeerFromPoint(winrt::Windows::Foundation::Point point, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().GetPeerFromPoint(*reinterpret_cast<winrt::Windows::Foundation::Point const*>(&point)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLiveSetting(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationLiveSetting>(this->shim().GetLiveSetting());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3>
    {
        int32_t __stdcall Navigate(int32_t direction, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().Navigate(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const*>(&direction)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetElementFromPoint(winrt::Windows::Foundation::Point pointInWindowCoordinates, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetElementFromPoint(*reinterpret_cast<winrt::Windows::Foundation::Point const*>(&pointInWindowCoordinates)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFocusedElement(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetFocusedElement());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall ShowContextMenu() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ShowContextMenu();
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetControlledPeers(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetControlledPeers());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAnnotations(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>>(this->shim().GetAnnotations());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SetParent(void* peer) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetParent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&peer));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RaiseTextEditTextChangedEvent(int32_t automationTextEditChangeType, void* changedData) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RaiseTextEditTextChangedEvent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::AutomationTextEditChangeType const*>(&automationTextEditChangeType), *reinterpret_cast<winrt::Windows::Foundation::Collections::IVectorView<hstring> const*>(&changedData));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPositionInSet(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetPositionInSet());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetSizeOfSet(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetSizeOfSet());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLevel(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetLevel());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RaiseStructureChangedEvent(int32_t structureChangeType, void* child) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RaiseStructureChangedEvent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationStructureChangeType const*>(&structureChangeType), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&child));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4>
    {
        int32_t __stdcall GetLandmarkType(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationLandmarkType>(this->shim().GetLandmarkType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLocalizedLandmarkType(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetLocalizedLandmarkType());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5>
    {
        int32_t __stdcall IsPeripheral(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsPeripheral());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsDataValidForForm(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsDataValidForForm());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFullDescription(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetFullDescription());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6>
    {
        int32_t __stdcall GetCulture(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetCulture());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7>
    {
        int32_t __stdcall RaiseNotificationEvent(int32_t notificationKind, int32_t notificationProcessing, void* displayString, void* activityId) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RaiseNotificationEvent(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationNotificationKind const*>(&notificationKind), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationNotificationProcessing const*>(&notificationProcessing), *reinterpret_cast<hstring const*>(&displayString), *reinterpret_cast<hstring const*>(&activityId));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8>
    {
        int32_t __stdcall GetHeadingLevel(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationHeadingLevel>(this->shim().GetHeadingLevel());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9>
    {
        int32_t __stdcall IsDialog(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsDialog());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation>
    {
        int32_t __stdcall get_Type(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::AnnotationType>(this->shim().Type());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Type(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Type(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::AnnotationType const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Peer(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().Peer());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Peer(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Peer(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory>
    {
        int32_t __stdcall CreateInstance(int32_t type, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>(this->shim().CreateInstance(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::AnnotationType const*>(&type)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithPeerParameter(int32_t type, void* peer, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>(this->shim().CreateWithPeerParameter(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::AnnotationType const*>(&type), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&peer)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics>
    {
        int32_t __stdcall get_TypeProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::DependencyProperty>(this->shim().TypeProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_PeerProperty(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::DependencyProperty>(this->shim().PeerProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstance(void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().CreateInstance(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>
    {
        int32_t __stdcall GetPatternCore(int32_t patternInterface, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetPatternCore(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const*>(&patternInterface)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAcceleratorKeyCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAcceleratorKeyCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAccessKeyCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAccessKeyCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAutomationControlTypeCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationControlType>(this->shim().GetAutomationControlTypeCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAutomationIdCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetAutomationIdCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetBoundingRectangleCore(winrt::Windows::Foundation::Rect* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Rect>(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Rect>(this->shim().GetBoundingRectangleCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetChildrenCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetChildrenCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetClassNameCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetClassNameCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetClickablePointCore(winrt::Windows::Foundation::Point* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Point>(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Point>(this->shim().GetClickablePointCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetHelpTextCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetHelpTextCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetItemStatusCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetItemStatusCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetItemTypeCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetItemTypeCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLabeledByCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().GetLabeledByCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLocalizedControlTypeCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetLocalizedControlTypeCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetNameCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetNameCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetOrientationCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationOrientation>(this->shim().GetOrientationCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall HasKeyboardFocusCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().HasKeyboardFocusCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsContentElementCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsContentElementCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsControlElementCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsControlElementCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsEnabledCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsEnabledCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsKeyboardFocusableCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsKeyboardFocusableCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsOffscreenCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsOffscreenCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsPasswordCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsPasswordCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsRequiredForFormCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsRequiredForFormCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SetFocusCore() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetFocusCore();
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPeerFromPointCore(winrt::Windows::Foundation::Point point, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().GetPeerFromPointCore(*reinterpret_cast<winrt::Windows::Foundation::Point const*>(&point)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLiveSettingCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationLiveSetting>(this->shim().GetLiveSettingCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>
    {
        int32_t __stdcall ShowContextMenuCore() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ShowContextMenuCore();
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetControlledPeersCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetControlledPeersCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>
    {
        int32_t __stdcall NavigateCore(int32_t direction, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().NavigateCore(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const*>(&direction)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetElementFromPointCore(winrt::Windows::Foundation::Point pointInWindowCoordinates, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetElementFromPointCore(*reinterpret_cast<winrt::Windows::Foundation::Point const*>(&pointInWindowCoordinates)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFocusedElementCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().GetFocusedElementCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetAnnotationsCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IVector<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation>>(this->shim().GetAnnotationsCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPositionInSetCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetPositionInSetCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetSizeOfSetCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetSizeOfSetCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLevelCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetLevelCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>
    {
        int32_t __stdcall GetLandmarkTypeCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationLandmarkType>(this->shim().GetLandmarkTypeCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetLocalizedLandmarkTypeCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetLocalizedLandmarkTypeCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>
    {
        int32_t __stdcall IsPeripheralCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsPeripheralCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall IsDataValidForFormCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsDataValidForFormCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFullDescriptionCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetFullDescriptionCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetDescribedByCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetDescribedByCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFlowsToCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetFlowsToCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetFlowsFromCore(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>>(this->shim().GetFlowsFromCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>
    {
        int32_t __stdcall GetCultureCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<int32_t>(this->shim().GetCultureCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>
    {
        int32_t __stdcall GetHeadingLevelCore(int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationHeadingLevel>(this->shim().GetHeadingLevelCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>
    {
        int32_t __stdcall IsDialogCore(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().IsDialogCore());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>
    {
        int32_t __stdcall PeerFromProvider(void* provider, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().PeerFromProvider(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple const*>(&provider)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall ProviderFromPeer(void* peer, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple>(this->shim().ProviderFromPeer(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const*>(&peer)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics>
    {
        int32_t __stdcall ListenerExists(int32_t eventId, bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().ListenerExists(*reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::AutomationEvents const*>(&eventId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3>
    {
        int32_t __stdcall GenerateRawElementProviderRuntimeId(struct struct_Windows_UI_Xaml_Automation_Peers_RawElementProviderRuntimeId* result) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Xaml::Automation::Peers::RawElementProviderRuntimeId>(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RawElementProviderRuntimeId>(this->shim().GenerateRawElementProviderRuntimeId());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Button const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::ButtonBase const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::CalendarDatePickerAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::CalendarDatePicker const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::CaptureElementAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::CaptureElement const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::CheckBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::CheckBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ColorPickerSliderAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::ColorPickerSlider const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ColorSpectrumAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::ColorSpectrum const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ComboBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ComboBoxItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::DatePickerAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::DatePicker const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::FlipView const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::FlipViewItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::FlyoutPresenterAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::FlyoutPresenter const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer>
    {
        int32_t __stdcall get_Owner(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::UIElement>(this->shim().Owner());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::FrameworkElement const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics>
    {
        int32_t __stdcall FromElement(void* element, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().FromElement(*reinterpret_cast<winrt::Windows::UI::Xaml::UIElement const*>(&element)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreatePeerForElement(void* element, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer>(this->shim().CreatePeerForElement(*reinterpret_cast<winrt::Windows::UI::Xaml::UIElement const*>(&element)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::GridView const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::GridViewHeaderItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::GridViewHeaderItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::GridViewItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::GroupItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::GroupItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::HubAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Hub const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::HubSectionAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::HubSection const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::HyperlinkButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::HyperlinkButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ImageAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Image const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IInkToolbarAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IInkToolbarAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer>
    {
        int32_t __stdcall get_Item(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IInspectable>(this->shim().Item());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ItemsControlAutomationPeer(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer>(this->shim().ItemsControlAutomationPeer());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2>
    {
        int32_t __stdcall CreateItemAutomationPeer(void* item, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer>(this->shim().CreateItemAutomationPeer(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ItemsControl const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>
    {
        int32_t __stdcall OnCreateItemAutomationPeer(void* item, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer>(this->shim().OnCreateItemAutomationPeer(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListBoxItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListPickerFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListPickerFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListView const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListViewBase const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseHeaderItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewHeaderItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListViewHeaderItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ListViewItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMapControlAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMapControlAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MediaElementAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MediaElement const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MediaPlayerElementAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MediaPlayerElement const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MediaTransportControlsAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MediaTransportControls const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstance(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MenuBarAutomationPeer>(this->shim().CreateInstance(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MenuBar const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstance(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MenuBarItemAutomationPeer>(this->shim().CreateInstance(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MenuBarItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MenuFlyoutItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutPresenterAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::MenuFlyoutPresenter const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::NavigationViewItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::NavigationViewItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::PasswordBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::PasswordBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::PersonPictureAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::PersonPicture const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPickerFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPickerFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Pivot const*>(&owner)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::PivotItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::PivotItem const*>(&owner)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::PivotItemDataAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer const*>(&parent)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ProgressBarAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ProgressBar const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ProgressRingAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ProgressRing const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RadioButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::RadioButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::RangeBase const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RatingControlAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::RatingControl const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RepeatButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::RepeatButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RichEditBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::RichEditBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::RichTextBlock const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockOverflowAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::RichTextBlockOverflow const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ScrollBarAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::ScrollBar const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ScrollViewerAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ScrollViewer const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SearchBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::SearchBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::Selector const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithParentAndItem(void* item, void* parent, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer>(this->shim().CreateInstanceWithParentAndItem(*reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&item), *reinterpret_cast<winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer const*>(&parent), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SemanticZoomAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::SemanticZoom const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SettingsFlyoutAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::SettingsFlyout const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::SliderAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Slider const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::TextBlockAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::TextBlock const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::TextBoxAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::TextBox const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ThumbAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::Thumb const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::TimePickerAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::TimePicker const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerFlyoutPresenterAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerFlyoutPresenterAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::Primitives::ToggleButton const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ToggleMenuFlyoutItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::ToggleSwitchAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::ToggleSwitch const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::TreeViewItemAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::TreeViewItem const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeer> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeer>
    {
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory> : produce_base<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory>
    {
        int32_t __stdcall CreateInstanceWithOwner(void* owner, void* baseInterface, void** innerInterface, void** value) noexcept final try
        {
            if (innerInterface) *innerInterface = nullptr;
            winrt::Windows::Foundation::IInspectable winrt_impl_innerInterface;
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Xaml::Automation::Peers::TreeViewListAutomationPeer>(this->shim().CreateInstanceWithOwner(*reinterpret_cast<winrt::Windows::UI::Xaml::Controls::TreeViewList const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::IInspectable const*>(&baseInterface), winrt_impl_innerInterface));
                if (innerInterface) *innerInterface = detach_abi(winrt_impl_innerInterface);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>
{
    auto GetPatternCore(winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const& patternInterface)
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetPatternCore(patternInterface);
        }

        return this->shim().GetPatternCore(patternInterface);
    }
    auto GetAcceleratorKeyCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetAcceleratorKeyCore();
        }

        return this->shim().GetAcceleratorKeyCore();
    }
    auto GetAccessKeyCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetAccessKeyCore();
        }

        return this->shim().GetAccessKeyCore();
    }
    auto GetAutomationControlTypeCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetAutomationControlTypeCore();
        }

        return this->shim().GetAutomationControlTypeCore();
    }
    auto GetAutomationIdCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetAutomationIdCore();
        }

        return this->shim().GetAutomationIdCore();
    }
    auto GetBoundingRectangleCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetBoundingRectangleCore();
        }

        return this->shim().GetBoundingRectangleCore();
    }
    auto GetChildrenCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetChildrenCore();
        }

        return this->shim().GetChildrenCore();
    }
    auto GetClassNameCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetClassNameCore();
        }

        return this->shim().GetClassNameCore();
    }
    auto GetClickablePointCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetClickablePointCore();
        }

        return this->shim().GetClickablePointCore();
    }
    auto GetHelpTextCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetHelpTextCore();
        }

        return this->shim().GetHelpTextCore();
    }
    auto GetItemStatusCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetItemStatusCore();
        }

        return this->shim().GetItemStatusCore();
    }
    auto GetItemTypeCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetItemTypeCore();
        }

        return this->shim().GetItemTypeCore();
    }
    auto GetLabeledByCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLabeledByCore();
        }

        return this->shim().GetLabeledByCore();
    }
    auto GetLocalizedControlTypeCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLocalizedControlTypeCore();
        }

        return this->shim().GetLocalizedControlTypeCore();
    }
    auto GetNameCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetNameCore();
        }

        return this->shim().GetNameCore();
    }
    auto GetOrientationCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetOrientationCore();
        }

        return this->shim().GetOrientationCore();
    }
    auto HasKeyboardFocusCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.HasKeyboardFocusCore();
        }

        return this->shim().HasKeyboardFocusCore();
    }
    auto IsContentElementCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsContentElementCore();
        }

        return this->shim().IsContentElementCore();
    }
    auto IsControlElementCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsControlElementCore();
        }

        return this->shim().IsControlElementCore();
    }
    auto IsEnabledCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsEnabledCore();
        }

        return this->shim().IsEnabledCore();
    }
    auto IsKeyboardFocusableCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsKeyboardFocusableCore();
        }

        return this->shim().IsKeyboardFocusableCore();
    }
    auto IsOffscreenCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsOffscreenCore();
        }

        return this->shim().IsOffscreenCore();
    }
    auto IsPasswordCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsPasswordCore();
        }

        return this->shim().IsPasswordCore();
    }
    auto IsRequiredForFormCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsRequiredForFormCore();
        }

        return this->shim().IsRequiredForFormCore();
    }
    auto SetFocusCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.SetFocusCore();
        }

        return this->shim().SetFocusCore();
    }
    auto GetPeerFromPointCore(winrt::Windows::Foundation::Point const& point)
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetPeerFromPointCore(point);
        }

        return this->shim().GetPeerFromPointCore(point);
    }
    auto GetLiveSettingCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLiveSettingCore();
        }

        return this->shim().GetLiveSettingCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>
{
    auto ShowContextMenuCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.ShowContextMenuCore();
        }

        return this->shim().ShowContextMenuCore();
    }
    auto GetControlledPeersCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetControlledPeersCore();
        }

        return this->shim().GetControlledPeersCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>
{
    auto NavigateCore(winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const& direction)
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.NavigateCore(direction);
        }

        return this->shim().NavigateCore(direction);
    }
    auto GetElementFromPointCore(winrt::Windows::Foundation::Point const& pointInWindowCoordinates)
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetElementFromPointCore(pointInWindowCoordinates);
        }

        return this->shim().GetElementFromPointCore(pointInWindowCoordinates);
    }
    auto GetFocusedElementCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetFocusedElementCore();
        }

        return this->shim().GetFocusedElementCore();
    }
    auto GetAnnotationsCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetAnnotationsCore();
        }

        return this->shim().GetAnnotationsCore();
    }
    auto GetPositionInSetCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetPositionInSetCore();
        }

        return this->shim().GetPositionInSetCore();
    }
    auto GetSizeOfSetCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetSizeOfSetCore();
        }

        return this->shim().GetSizeOfSetCore();
    }
    auto GetLevelCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLevelCore();
        }

        return this->shim().GetLevelCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>
{
    auto GetLandmarkTypeCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLandmarkTypeCore();
        }

        return this->shim().GetLandmarkTypeCore();
    }
    auto GetLocalizedLandmarkTypeCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetLocalizedLandmarkTypeCore();
        }

        return this->shim().GetLocalizedLandmarkTypeCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>
{
    auto IsPeripheralCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsPeripheralCore();
        }

        return this->shim().IsPeripheralCore();
    }
    auto IsDataValidForFormCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsDataValidForFormCore();
        }

        return this->shim().IsDataValidForFormCore();
    }
    auto GetFullDescriptionCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetFullDescriptionCore();
        }

        return this->shim().GetFullDescriptionCore();
    }
    auto GetDescribedByCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetDescribedByCore();
        }

        return this->shim().GetDescribedByCore();
    }
    auto GetFlowsToCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetFlowsToCore();
        }

        return this->shim().GetFlowsToCore();
    }
    auto GetFlowsFromCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetFlowsFromCore();
        }

        return this->shim().GetFlowsFromCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>
{
    auto GetCultureCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetCultureCore();
        }

        return this->shim().GetCultureCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>
{
    auto GetHeadingLevelCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.GetHeadingLevelCore();
        }

        return this->shim().GetHeadingLevelCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>
{
    auto IsDialogCore()
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.IsDialogCore();
        }

        return this->shim().IsDialogCore();
    }
};
template <typename T, typename D>
struct WINRT_IMPL_EMPTY_BASES produce_dispatch_to_overridable<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>
    : produce_dispatch_to_overridable_base<T, D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>
{
    auto OnCreateItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item)
    {
        if (auto overridable = this->shim_overridable())
        {
            return overridable.OnCreateItemAutomationPeer(item);
        }

        return this->shim().OnCreateItemAutomationPeer(item);
    }
};
}
WINRT_EXPORT namespace winrt::Windows::UI::Xaml::Automation::Peers
{
    inline AppBarAutomationPeer::AppBarAutomationPeer(winrt::Windows::UI::Xaml::Controls::AppBar const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<AppBarAutomationPeer, IAppBarAutomationPeerFactory>([&](IAppBarAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline AppBarButtonAutomationPeer::AppBarButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::AppBarButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<AppBarButtonAutomationPeer, IAppBarButtonAutomationPeerFactory>([&](IAppBarButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline AppBarToggleButtonAutomationPeer::AppBarToggleButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::AppBarToggleButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<AppBarToggleButtonAutomationPeer, IAppBarToggleButtonAutomationPeerFactory>([&](IAppBarToggleButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline AutoSuggestBoxAutomationPeer::AutoSuggestBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::AutoSuggestBox const& owner) :
        AutoSuggestBoxAutomationPeer(impl::call_factory<AutoSuggestBoxAutomationPeer, IAutoSuggestBoxAutomationPeerFactory>([&](IAutoSuggestBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner); }))
    {
    }
    inline auto AutomationPeer::ListenerExists(winrt::Windows::UI::Xaml::Automation::Peers::AutomationEvents const& eventId)
    {
        return impl::call_factory<AutomationPeer, IAutomationPeerStatics>([&](IAutomationPeerStatics const& f) { return f.ListenerExists(eventId); });
    }
    inline auto AutomationPeer::GenerateRawElementProviderRuntimeId()
    {
        return impl::call_factory_cast<winrt::Windows::UI::Xaml::Automation::Peers::RawElementProviderRuntimeId(*)(IAutomationPeerStatics3 const&), AutomationPeer, IAutomationPeerStatics3>([](IAutomationPeerStatics3 const& f) { return f.GenerateRawElementProviderRuntimeId(); });
    }
    inline AutomationPeerAnnotation::AutomationPeerAnnotation() :
        AutomationPeerAnnotation(impl::call_factory_cast<AutomationPeerAnnotation(*)(winrt::Windows::Foundation::IActivationFactory const&), AutomationPeerAnnotation>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<AutomationPeerAnnotation>(); }))
    {
    }
    inline AutomationPeerAnnotation::AutomationPeerAnnotation(winrt::Windows::UI::Xaml::Automation::AnnotationType const& type) :
        AutomationPeerAnnotation(impl::call_factory<AutomationPeerAnnotation, IAutomationPeerAnnotationFactory>([&](IAutomationPeerAnnotationFactory const& f) { return f.CreateInstance(type); }))
    {
    }
    inline AutomationPeerAnnotation::AutomationPeerAnnotation(winrt::Windows::UI::Xaml::Automation::AnnotationType const& type, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer const& peer) :
        AutomationPeerAnnotation(impl::call_factory<AutomationPeerAnnotation, IAutomationPeerAnnotationFactory>([&](IAutomationPeerAnnotationFactory const& f) { return f.CreateWithPeerParameter(type, peer); }))
    {
    }
    inline auto AutomationPeerAnnotation::TypeProperty()
    {
        return impl::call_factory_cast<winrt::Windows::UI::Xaml::DependencyProperty(*)(IAutomationPeerAnnotationStatics const&), AutomationPeerAnnotation, IAutomationPeerAnnotationStatics>([](IAutomationPeerAnnotationStatics const& f) { return f.TypeProperty(); });
    }
    inline auto AutomationPeerAnnotation::PeerProperty()
    {
        return impl::call_factory_cast<winrt::Windows::UI::Xaml::DependencyProperty(*)(IAutomationPeerAnnotationStatics const&), AutomationPeerAnnotation, IAutomationPeerAnnotationStatics>([](IAutomationPeerAnnotationStatics const& f) { return f.PeerProperty(); });
    }
    inline ButtonAutomationPeer::ButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::Button const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ButtonAutomationPeer, IButtonAutomationPeerFactory>([&](IButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline CalendarDatePickerAutomationPeer::CalendarDatePickerAutomationPeer(winrt::Windows::UI::Xaml::Controls::CalendarDatePicker const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<CalendarDatePickerAutomationPeer, ICalendarDatePickerAutomationPeerFactory>([&](ICalendarDatePickerAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline CaptureElementAutomationPeer::CaptureElementAutomationPeer(winrt::Windows::UI::Xaml::Controls::CaptureElement const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<CaptureElementAutomationPeer, ICaptureElementAutomationPeerFactory>([&](ICaptureElementAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline CheckBoxAutomationPeer::CheckBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::CheckBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<CheckBoxAutomationPeer, ICheckBoxAutomationPeerFactory>([&](ICheckBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ColorPickerSliderAutomationPeer::ColorPickerSliderAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::ColorPickerSlider const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ColorPickerSliderAutomationPeer, IColorPickerSliderAutomationPeerFactory>([&](IColorPickerSliderAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ColorSpectrumAutomationPeer::ColorSpectrumAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::ColorSpectrum const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ColorSpectrumAutomationPeer, IColorSpectrumAutomationPeerFactory>([&](IColorSpectrumAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ComboBoxAutomationPeer::ComboBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::ComboBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ComboBoxAutomationPeer, IComboBoxAutomationPeerFactory>([&](IComboBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ComboBoxItemAutomationPeer::ComboBoxItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::ComboBoxItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ComboBoxItemAutomationPeer, IComboBoxItemAutomationPeerFactory>([&](IComboBoxItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ComboBoxItemDataAutomationPeer::ComboBoxItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ComboBoxItemDataAutomationPeer, IComboBoxItemDataAutomationPeerFactory>([&](IComboBoxItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline DatePickerAutomationPeer::DatePickerAutomationPeer(winrt::Windows::UI::Xaml::Controls::DatePicker const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<DatePickerAutomationPeer, IDatePickerAutomationPeerFactory>([&](IDatePickerAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline FlipViewAutomationPeer::FlipViewAutomationPeer(winrt::Windows::UI::Xaml::Controls::FlipView const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<FlipViewAutomationPeer, IFlipViewAutomationPeerFactory>([&](IFlipViewAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline FlipViewItemAutomationPeer::FlipViewItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::FlipViewItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<FlipViewItemAutomationPeer, IFlipViewItemAutomationPeerFactory>([&](IFlipViewItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline FlipViewItemDataAutomationPeer::FlipViewItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<FlipViewItemDataAutomationPeer, IFlipViewItemDataAutomationPeerFactory>([&](IFlipViewItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline FlyoutPresenterAutomationPeer::FlyoutPresenterAutomationPeer(winrt::Windows::UI::Xaml::Controls::FlyoutPresenter const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<FlyoutPresenterAutomationPeer, IFlyoutPresenterAutomationPeerFactory>([&](IFlyoutPresenterAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline FrameworkElementAutomationPeer::FrameworkElementAutomationPeer(winrt::Windows::UI::Xaml::FrameworkElement const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerFactory>([&](IFrameworkElementAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline auto FrameworkElementAutomationPeer::FromElement(winrt::Windows::UI::Xaml::UIElement const& element)
    {
        return impl::call_factory<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerStatics>([&](IFrameworkElementAutomationPeerStatics const& f) { return f.FromElement(element); });
    }
    inline auto FrameworkElementAutomationPeer::CreatePeerForElement(winrt::Windows::UI::Xaml::UIElement const& element)
    {
        return impl::call_factory<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerStatics>([&](IFrameworkElementAutomationPeerStatics const& f) { return f.CreatePeerForElement(element); });
    }
    inline GridViewAutomationPeer::GridViewAutomationPeer(winrt::Windows::UI::Xaml::Controls::GridView const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<GridViewAutomationPeer, IGridViewAutomationPeerFactory>([&](IGridViewAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline GridViewHeaderItemAutomationPeer::GridViewHeaderItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::GridViewHeaderItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<GridViewHeaderItemAutomationPeer, IGridViewHeaderItemAutomationPeerFactory>([&](IGridViewHeaderItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline GridViewItemAutomationPeer::GridViewItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::GridViewItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<GridViewItemAutomationPeer, IGridViewItemAutomationPeerFactory>([&](IGridViewItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline GridViewItemDataAutomationPeer::GridViewItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<GridViewItemDataAutomationPeer, IGridViewItemDataAutomationPeerFactory>([&](IGridViewItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline GroupItemAutomationPeer::GroupItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::GroupItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<GroupItemAutomationPeer, IGroupItemAutomationPeerFactory>([&](IGroupItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline HubAutomationPeer::HubAutomationPeer(winrt::Windows::UI::Xaml::Controls::Hub const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<HubAutomationPeer, IHubAutomationPeerFactory>([&](IHubAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline HubSectionAutomationPeer::HubSectionAutomationPeer(winrt::Windows::UI::Xaml::Controls::HubSection const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<HubSectionAutomationPeer, IHubSectionAutomationPeerFactory>([&](IHubSectionAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline HyperlinkButtonAutomationPeer::HyperlinkButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::HyperlinkButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<HyperlinkButtonAutomationPeer, IHyperlinkButtonAutomationPeerFactory>([&](IHyperlinkButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ImageAutomationPeer::ImageAutomationPeer(winrt::Windows::UI::Xaml::Controls::Image const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ImageAutomationPeer, IImageAutomationPeerFactory>([&](IImageAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ItemAutomationPeer::ItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ItemAutomationPeer, IItemAutomationPeerFactory>([&](IItemAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline ItemsControlAutomationPeer::ItemsControlAutomationPeer(winrt::Windows::UI::Xaml::Controls::ItemsControl const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ItemsControlAutomationPeer, IItemsControlAutomationPeerFactory>([&](IItemsControlAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListBoxAutomationPeer::ListBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListBoxAutomationPeer, IListBoxAutomationPeerFactory>([&](IListBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListBoxItemAutomationPeer::ListBoxItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListBoxItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListBoxItemAutomationPeer, IListBoxItemAutomationPeerFactory>([&](IListBoxItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListBoxItemDataAutomationPeer::ListBoxItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListBoxItemDataAutomationPeer, IListBoxItemDataAutomationPeerFactory>([&](IListBoxItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline ListViewAutomationPeer::ListViewAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListView const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListViewAutomationPeer, IListViewAutomationPeerFactory>([&](IListViewAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListViewBaseAutomationPeer::ListViewBaseAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListViewBase const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListViewBaseAutomationPeer, IListViewBaseAutomationPeerFactory>([&](IListViewBaseAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListViewHeaderItemAutomationPeer::ListViewHeaderItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListViewHeaderItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListViewHeaderItemAutomationPeer, IListViewHeaderItemAutomationPeerFactory>([&](IListViewHeaderItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListViewItemAutomationPeer::ListViewItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::ListViewItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListViewItemAutomationPeer, IListViewItemAutomationPeerFactory>([&](IListViewItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ListViewItemDataAutomationPeer::ListViewItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ListViewItemDataAutomationPeer, IListViewItemDataAutomationPeerFactory>([&](IListViewItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline MediaElementAutomationPeer::MediaElementAutomationPeer(winrt::Windows::UI::Xaml::Controls::MediaElement const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MediaElementAutomationPeer, IMediaElementAutomationPeerFactory>([&](IMediaElementAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline MediaPlayerElementAutomationPeer::MediaPlayerElementAutomationPeer(winrt::Windows::UI::Xaml::Controls::MediaPlayerElement const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MediaPlayerElementAutomationPeer, IMediaPlayerElementAutomationPeerFactory>([&](IMediaPlayerElementAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline MediaTransportControlsAutomationPeer::MediaTransportControlsAutomationPeer(winrt::Windows::UI::Xaml::Controls::MediaTransportControls const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MediaTransportControlsAutomationPeer, IMediaTransportControlsAutomationPeerFactory>([&](IMediaTransportControlsAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline MenuBarAutomationPeer::MenuBarAutomationPeer(winrt::Windows::UI::Xaml::Controls::MenuBar const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MenuBarAutomationPeer, IMenuBarAutomationPeerFactory>([&](IMenuBarAutomationPeerFactory const& f) { return f.CreateInstance(owner, baseInterface, innerInterface); });
    }
    inline MenuBarItemAutomationPeer::MenuBarItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::MenuBarItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MenuBarItemAutomationPeer, IMenuBarItemAutomationPeerFactory>([&](IMenuBarItemAutomationPeerFactory const& f) { return f.CreateInstance(owner, baseInterface, innerInterface); });
    }
    inline MenuFlyoutItemAutomationPeer::MenuFlyoutItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::MenuFlyoutItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MenuFlyoutItemAutomationPeer, IMenuFlyoutItemAutomationPeerFactory>([&](IMenuFlyoutItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline MenuFlyoutPresenterAutomationPeer::MenuFlyoutPresenterAutomationPeer(winrt::Windows::UI::Xaml::Controls::MenuFlyoutPresenter const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<MenuFlyoutPresenterAutomationPeer, IMenuFlyoutPresenterAutomationPeerFactory>([&](IMenuFlyoutPresenterAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline NavigationViewItemAutomationPeer::NavigationViewItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::NavigationViewItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<NavigationViewItemAutomationPeer, INavigationViewItemAutomationPeerFactory>([&](INavigationViewItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline PasswordBoxAutomationPeer::PasswordBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::PasswordBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<PasswordBoxAutomationPeer, IPasswordBoxAutomationPeerFactory>([&](IPasswordBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline PersonPictureAutomationPeer::PersonPictureAutomationPeer(winrt::Windows::UI::Xaml::Controls::PersonPicture const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<PersonPictureAutomationPeer, IPersonPictureAutomationPeerFactory>([&](IPersonPictureAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline PivotAutomationPeer::PivotAutomationPeer(winrt::Windows::UI::Xaml::Controls::Pivot const& owner) :
        PivotAutomationPeer(impl::call_factory<PivotAutomationPeer, IPivotAutomationPeerFactory>([&](IPivotAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner); }))
    {
    }
    inline PivotItemAutomationPeer::PivotItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::PivotItem const& owner) :
        PivotItemAutomationPeer(impl::call_factory<PivotItemAutomationPeer, IPivotItemAutomationPeerFactory>([&](IPivotItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner); }))
    {
    }
    inline PivotItemDataAutomationPeer::PivotItemDataAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer const& parent) :
        PivotItemDataAutomationPeer(impl::call_factory<PivotItemDataAutomationPeer, IPivotItemDataAutomationPeerFactory>([&](IPivotItemDataAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent); }))
    {
    }
    inline ProgressBarAutomationPeer::ProgressBarAutomationPeer(winrt::Windows::UI::Xaml::Controls::ProgressBar const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ProgressBarAutomationPeer, IProgressBarAutomationPeerFactory>([&](IProgressBarAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ProgressRingAutomationPeer::ProgressRingAutomationPeer(winrt::Windows::UI::Xaml::Controls::ProgressRing const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ProgressRingAutomationPeer, IProgressRingAutomationPeerFactory>([&](IProgressRingAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RadioButtonAutomationPeer::RadioButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::RadioButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RadioButtonAutomationPeer, IRadioButtonAutomationPeerFactory>([&](IRadioButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RangeBaseAutomationPeer::RangeBaseAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::RangeBase const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RangeBaseAutomationPeer, IRangeBaseAutomationPeerFactory>([&](IRangeBaseAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RatingControlAutomationPeer::RatingControlAutomationPeer(winrt::Windows::UI::Xaml::Controls::RatingControl const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RatingControlAutomationPeer, IRatingControlAutomationPeerFactory>([&](IRatingControlAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RepeatButtonAutomationPeer::RepeatButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::RepeatButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RepeatButtonAutomationPeer, IRepeatButtonAutomationPeerFactory>([&](IRepeatButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RichEditBoxAutomationPeer::RichEditBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::RichEditBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RichEditBoxAutomationPeer, IRichEditBoxAutomationPeerFactory>([&](IRichEditBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RichTextBlockAutomationPeer::RichTextBlockAutomationPeer(winrt::Windows::UI::Xaml::Controls::RichTextBlock const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RichTextBlockAutomationPeer, IRichTextBlockAutomationPeerFactory>([&](IRichTextBlockAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline RichTextBlockOverflowAutomationPeer::RichTextBlockOverflowAutomationPeer(winrt::Windows::UI::Xaml::Controls::RichTextBlockOverflow const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<RichTextBlockOverflowAutomationPeer, IRichTextBlockOverflowAutomationPeerFactory>([&](IRichTextBlockOverflowAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ScrollBarAutomationPeer::ScrollBarAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::ScrollBar const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ScrollBarAutomationPeer, IScrollBarAutomationPeerFactory>([&](IScrollBarAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ScrollViewerAutomationPeer::ScrollViewerAutomationPeer(winrt::Windows::UI::Xaml::Controls::ScrollViewer const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ScrollViewerAutomationPeer, IScrollViewerAutomationPeerFactory>([&](IScrollViewerAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline SearchBoxAutomationPeer::SearchBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::SearchBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SearchBoxAutomationPeer, ISearchBoxAutomationPeerFactory>([&](ISearchBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline SelectorAutomationPeer::SelectorAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::Selector const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SelectorAutomationPeer, ISelectorAutomationPeerFactory>([&](ISelectorAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline SelectorItemAutomationPeer::SelectorItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer const& parent)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SelectorItemAutomationPeer, ISelectorItemAutomationPeerFactory>([&](ISelectorItemAutomationPeerFactory const& f) { return f.CreateInstanceWithParentAndItem(item, parent, baseInterface, innerInterface); });
    }
    inline SemanticZoomAutomationPeer::SemanticZoomAutomationPeer(winrt::Windows::UI::Xaml::Controls::SemanticZoom const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SemanticZoomAutomationPeer, ISemanticZoomAutomationPeerFactory>([&](ISemanticZoomAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline SettingsFlyoutAutomationPeer::SettingsFlyoutAutomationPeer(winrt::Windows::UI::Xaml::Controls::SettingsFlyout const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SettingsFlyoutAutomationPeer, ISettingsFlyoutAutomationPeerFactory>([&](ISettingsFlyoutAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline SliderAutomationPeer::SliderAutomationPeer(winrt::Windows::UI::Xaml::Controls::Slider const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<SliderAutomationPeer, ISliderAutomationPeerFactory>([&](ISliderAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline TextBlockAutomationPeer::TextBlockAutomationPeer(winrt::Windows::UI::Xaml::Controls::TextBlock const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<TextBlockAutomationPeer, ITextBlockAutomationPeerFactory>([&](ITextBlockAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline TextBoxAutomationPeer::TextBoxAutomationPeer(winrt::Windows::UI::Xaml::Controls::TextBox const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<TextBoxAutomationPeer, ITextBoxAutomationPeerFactory>([&](ITextBoxAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ThumbAutomationPeer::ThumbAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::Thumb const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ThumbAutomationPeer, IThumbAutomationPeerFactory>([&](IThumbAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline TimePickerAutomationPeer::TimePickerAutomationPeer(winrt::Windows::UI::Xaml::Controls::TimePicker const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<TimePickerAutomationPeer, ITimePickerAutomationPeerFactory>([&](ITimePickerAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ToggleButtonAutomationPeer::ToggleButtonAutomationPeer(winrt::Windows::UI::Xaml::Controls::Primitives::ToggleButton const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ToggleButtonAutomationPeer, IToggleButtonAutomationPeerFactory>([&](IToggleButtonAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ToggleMenuFlyoutItemAutomationPeer::ToggleMenuFlyoutItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ToggleMenuFlyoutItemAutomationPeer, IToggleMenuFlyoutItemAutomationPeerFactory>([&](IToggleMenuFlyoutItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline ToggleSwitchAutomationPeer::ToggleSwitchAutomationPeer(winrt::Windows::UI::Xaml::Controls::ToggleSwitch const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<ToggleSwitchAutomationPeer, IToggleSwitchAutomationPeerFactory>([&](IToggleSwitchAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline TreeViewItemAutomationPeer::TreeViewItemAutomationPeer(winrt::Windows::UI::Xaml::Controls::TreeViewItem const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<TreeViewItemAutomationPeer, ITreeViewItemAutomationPeerFactory>([&](ITreeViewItemAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    inline TreeViewListAutomationPeer::TreeViewListAutomationPeer(winrt::Windows::UI::Xaml::Controls::TreeViewList const& owner)
    {
        winrt::Windows::Foundation::IInspectable baseInterface, innerInterface;
        *this = impl::call_factory<TreeViewListAutomationPeer, ITreeViewListAutomationPeerFactory>([&](ITreeViewListAutomationPeerFactory const& f) { return f.CreateInstanceWithOwner(owner, baseInterface, innerInterface); });
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetPatternCore(winrt::Windows::UI::Xaml::Automation::Peers::PatternInterface const& patternInterface) const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetPatternCore(patternInterface);
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetAcceleratorKeyCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetAcceleratorKeyCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetAccessKeyCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetAccessKeyCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetAutomationControlTypeCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetAutomationControlTypeCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetAutomationIdCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetAutomationIdCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetBoundingRectangleCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetBoundingRectangleCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetChildrenCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetChildrenCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetClassNameCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetClassNameCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetClickablePointCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetClickablePointCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetHelpTextCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetHelpTextCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetItemStatusCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetItemStatusCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetItemTypeCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetItemTypeCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetLabeledByCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetLabeledByCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetLocalizedControlTypeCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetLocalizedControlTypeCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetNameCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetNameCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetOrientationCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetOrientationCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::HasKeyboardFocusCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().HasKeyboardFocusCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsContentElementCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsContentElementCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsControlElementCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsControlElementCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsEnabledCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsEnabledCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsKeyboardFocusableCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsKeyboardFocusableCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsOffscreenCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsOffscreenCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsPasswordCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsPasswordCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::IsRequiredForFormCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().IsRequiredForFormCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::SetFocusCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().SetFocusCore();
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetPeerFromPointCore(winrt::Windows::Foundation::Point const& point) const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetPeerFromPointCore(point);
    }
    template <typename D> auto IAutomationPeerOverridesT<D>::GetLiveSettingCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides>().GetLiveSettingCore();
    }
    template <typename D> auto IAutomationPeerOverrides2T<D>::ShowContextMenuCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides2>().ShowContextMenuCore();
    }
    template <typename D> auto IAutomationPeerOverrides2T<D>::GetControlledPeersCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides2>().GetControlledPeersCore();
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::NavigateCore(winrt::Windows::UI::Xaml::Automation::Peers::AutomationNavigationDirection const& direction) const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().NavigateCore(direction);
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetElementFromPointCore(winrt::Windows::Foundation::Point const& pointInWindowCoordinates) const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetElementFromPointCore(pointInWindowCoordinates);
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetFocusedElementCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetFocusedElementCore();
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetAnnotationsCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetAnnotationsCore();
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetPositionInSetCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetPositionInSetCore();
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetSizeOfSetCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetSizeOfSetCore();
    }
    template <typename D> auto IAutomationPeerOverrides3T<D>::GetLevelCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides3>().GetLevelCore();
    }
    template <typename D> auto IAutomationPeerOverrides4T<D>::GetLandmarkTypeCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides4>().GetLandmarkTypeCore();
    }
    template <typename D> auto IAutomationPeerOverrides4T<D>::GetLocalizedLandmarkTypeCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides4>().GetLocalizedLandmarkTypeCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::IsPeripheralCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().IsPeripheralCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::IsDataValidForFormCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().IsDataValidForFormCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::GetFullDescriptionCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().GetFullDescriptionCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::GetDescribedByCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().GetDescribedByCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::GetFlowsToCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().GetFlowsToCore();
    }
    template <typename D> auto IAutomationPeerOverrides5T<D>::GetFlowsFromCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides5>().GetFlowsFromCore();
    }
    template <typename D> auto IAutomationPeerOverrides6T<D>::GetCultureCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides6>().GetCultureCore();
    }
    template <typename D> auto IAutomationPeerOverrides8T<D>::GetHeadingLevelCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides8>().GetHeadingLevelCore();
    }
    template <typename D> auto IAutomationPeerOverrides9T<D>::IsDialogCore() const
    {
        return shim().template try_as<IAutomationPeerOverrides9>().IsDialogCore();
    }
    template <typename D> auto IItemsControlAutomationPeerOverrides2T<D>::OnCreateItemAutomationPeer(winrt::Windows::Foundation::IInspectable const& item) const
    {
        return shim().template try_as<IItemsControlAutomationPeerOverrides2>().OnCreateItemAutomationPeer(item);
    }
    template <typename D, typename... Interfaces>
    struct AppBarAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Provider::IExpandCollapseProvider, winrt::Windows::UI::Xaml::Automation::Provider::IWindowProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, AppBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = AppBarAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        AppBarAutomationPeerT(winrt::Windows::UI::Xaml::Controls::AppBar const& owner)
        {
            impl::call_factory<AppBarAutomationPeer, IAppBarAutomationPeerFactory>([&](IAppBarAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct AppBarButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IExpandCollapseProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, AppBarButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = AppBarButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        AppBarButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::AppBarButton const& owner)
        {
            impl::call_factory<AppBarButtonAutomationPeer, IAppBarButtonAutomationPeerFactory>([&](IAppBarButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct AppBarToggleButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, AppBarToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = AppBarToggleButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        AppBarToggleButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::AppBarToggleButton const& owner)
        {
            impl::call_factory<AppBarToggleButtonAutomationPeer, IAppBarToggleButtonAutomationPeerFactory>([&](IAppBarToggleButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct AutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = AutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        AutomationPeerT()
        {
            impl::call_factory<AutomationPeer, IAutomationPeerFactory>([&](IAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstance(*this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Button const& owner)
        {
            impl::call_factory<ButtonAutomationPeer, IButtonAutomationPeerFactory>([&](IButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ButtonBaseAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ButtonBaseAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ButtonBaseAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::ButtonBase const& owner)
        {
            impl::call_factory<ButtonBaseAutomationPeer, IButtonBaseAutomationPeerFactory>([&](IButtonBaseAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct CalendarDatePickerAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Provider::IValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, CalendarDatePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = CalendarDatePickerAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        CalendarDatePickerAutomationPeerT(winrt::Windows::UI::Xaml::Controls::CalendarDatePicker const& owner)
        {
            impl::call_factory<CalendarDatePickerAutomationPeer, ICalendarDatePickerAutomationPeerFactory>([&](ICalendarDatePickerAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct CaptureElementAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, CaptureElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = CaptureElementAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        CaptureElementAutomationPeerT(winrt::Windows::UI::Xaml::Controls::CaptureElement const& owner)
        {
            impl::call_factory<CaptureElementAutomationPeer, ICaptureElementAutomationPeerFactory>([&](ICaptureElementAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct CheckBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, CheckBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = CheckBoxAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        CheckBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::CheckBox const& owner)
        {
            impl::call_factory<CheckBoxAutomationPeer, ICheckBoxAutomationPeerFactory>([&](ICheckBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ColorPickerSliderAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ColorPickerSliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ColorPickerSliderAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ColorPickerSliderAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::ColorPickerSlider const& owner)
        {
            impl::call_factory<ColorPickerSliderAutomationPeer, IColorPickerSliderAutomationPeerFactory>([&](IColorPickerSliderAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct ColorSpectrumAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ColorSpectrumAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ColorSpectrumAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ColorSpectrumAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::ColorSpectrum const& owner)
        {
            impl::call_factory<ColorSpectrumAutomationPeer, IColorSpectrumAutomationPeerFactory>([&](IColorSpectrumAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ComboBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IValueProvider, winrt::Windows::UI::Xaml::Automation::Provider::IExpandCollapseProvider, winrt::Windows::UI::Xaml::Automation::Provider::IWindowProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ComboBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ComboBoxAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ComboBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ComboBox const& owner)
        {
            impl::call_factory<ComboBoxAutomationPeer, IComboBoxAutomationPeerFactory>([&](IComboBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct ComboBoxItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ComboBoxItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ComboBoxItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ComboBoxItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ComboBoxItem const& owner)
        {
            impl::call_factory<ComboBoxItemAutomationPeer, IComboBoxItemAutomationPeerFactory>([&](IComboBoxItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ComboBoxItemDataAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ComboBoxItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ComboBoxItemDataAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ComboBoxItemDataAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer const& parent)
        {
            impl::call_factory<ComboBoxItemDataAutomationPeer, IComboBoxItemDataAutomationPeerFactory>([&](IComboBoxItemDataAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct DatePickerAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, DatePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = DatePickerAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        DatePickerAutomationPeerT(winrt::Windows::UI::Xaml::Controls::DatePicker const& owner)
        {
            impl::call_factory<DatePickerAutomationPeer, IDatePickerAutomationPeerFactory>([&](IDatePickerAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct FlipViewAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, FlipViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = FlipViewAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        FlipViewAutomationPeerT(winrt::Windows::UI::Xaml::Controls::FlipView const& owner)
        {
            impl::call_factory<FlipViewAutomationPeer, IFlipViewAutomationPeerFactory>([&](IFlipViewAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct FlipViewItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, FlipViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = FlipViewItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        FlipViewItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::FlipViewItem const& owner)
        {
            impl::call_factory<FlipViewItemAutomationPeer, IFlipViewItemAutomationPeerFactory>([&](IFlipViewItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct FlipViewItemDataAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, FlipViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = FlipViewItemDataAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        FlipViewItemDataAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer const& parent)
        {
            impl::call_factory<FlipViewItemDataAutomationPeer, IFlipViewItemDataAutomationPeerFactory>([&](IFlipViewItemDataAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct FlyoutPresenterAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, FlyoutPresenterAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = FlyoutPresenterAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        FlyoutPresenterAutomationPeerT(winrt::Windows::UI::Xaml::Controls::FlyoutPresenter const& owner)
        {
            impl::call_factory<FlyoutPresenterAutomationPeer, IFlyoutPresenterAutomationPeerFactory>([&](IFlyoutPresenterAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct FrameworkElementAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = FrameworkElementAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        FrameworkElementAutomationPeerT(winrt::Windows::UI::Xaml::FrameworkElement const& owner)
        {
            impl::call_factory<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerFactory>([&](IFrameworkElementAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct GridViewAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IDropTargetProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, GridViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = GridViewAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        GridViewAutomationPeerT(winrt::Windows::UI::Xaml::Controls::GridView const& owner)
        {
            impl::call_factory<GridViewAutomationPeer, IGridViewAutomationPeerFactory>([&](IGridViewAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct GridViewHeaderItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, GridViewHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = GridViewHeaderItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        GridViewHeaderItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::GridViewHeaderItem const& owner)
        {
            impl::call_factory<GridViewHeaderItemAutomationPeer, IGridViewHeaderItemAutomationPeerFactory>([&](IGridViewHeaderItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct GridViewItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, GridViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = GridViewItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        GridViewItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::GridViewItem const& owner)
        {
            impl::call_factory<GridViewItemAutomationPeer, IGridViewItemAutomationPeerFactory>([&](IGridViewItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct GridViewItemDataAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, GridViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = GridViewItemDataAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        GridViewItemDataAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer const& parent)
        {
            impl::call_factory<GridViewItemDataAutomationPeer, IGridViewItemDataAutomationPeerFactory>([&](IGridViewItemDataAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct GroupItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, GroupItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = GroupItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        GroupItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::GroupItem const& owner)
        {
            impl::call_factory<GroupItemAutomationPeer, IGroupItemAutomationPeerFactory>([&](IGroupItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct HubAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, HubAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = HubAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        HubAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Hub const& owner)
        {
            impl::call_factory<HubAutomationPeer, IHubAutomationPeerFactory>([&](IHubAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct HubSectionAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, HubSectionAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = HubSectionAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        HubSectionAutomationPeerT(winrt::Windows::UI::Xaml::Controls::HubSection const& owner)
        {
            impl::call_factory<HubSectionAutomationPeer, IHubSectionAutomationPeerFactory>([&](IHubSectionAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct HyperlinkButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, HyperlinkButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = HyperlinkButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        HyperlinkButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::HyperlinkButton const& owner)
        {
            impl::call_factory<HyperlinkButtonAutomationPeer, IHyperlinkButtonAutomationPeerFactory>([&](IHyperlinkButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ImageAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ImageAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ImageAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ImageAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Image const& owner)
        {
            impl::call_factory<ImageAutomationPeer, IImageAutomationPeerFactory>([&](IImageAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ItemAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer const& parent)
        {
            impl::call_factory<ItemAutomationPeer, IItemAutomationPeerFactory>([&](IItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ItemsControlAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ItemsControlAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ItemsControlAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ItemsControl const& owner)
        {
            impl::call_factory<ItemsControlAutomationPeer, IItemsControlAutomationPeerFactory>([&](IItemsControlAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListBoxAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListBox const& owner)
        {
            impl::call_factory<ListBoxAutomationPeer, IListBoxAutomationPeerFactory>([&](IListBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListBoxItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListBoxItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListBoxItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListBoxItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListBoxItem const& owner)
        {
            impl::call_factory<ListBoxItemAutomationPeer, IListBoxItemAutomationPeerFactory>([&](IListBoxItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListBoxItemDataAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListBoxItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListBoxItemDataAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListBoxItemDataAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer const& parent)
        {
            impl::call_factory<ListBoxItemDataAutomationPeer, IListBoxItemDataAutomationPeerFactory>([&](IListBoxItemDataAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IDropTargetProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListView const& owner)
        {
            impl::call_factory<ListViewAutomationPeer, IListViewAutomationPeerFactory>([&](IListViewAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewBaseAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IDropTargetProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewBaseAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewBaseAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListViewBase const& owner)
        {
            impl::call_factory<ListViewBaseAutomationPeer, IListViewBaseAutomationPeerFactory>([&](IListViewBaseAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewBaseHeaderItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewBaseHeaderItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewBaseHeaderItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem const& owner)
        {
            impl::call_factory<ListViewBaseHeaderItemAutomationPeer, IListViewBaseHeaderItemAutomationPeerFactory>([&](IListViewBaseHeaderItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewHeaderItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseHeaderItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewHeaderItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewHeaderItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListViewHeaderItem const& owner)
        {
            impl::call_factory<ListViewHeaderItemAutomationPeer, IListViewHeaderItemAutomationPeerFactory>([&](IListViewHeaderItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ListViewItem const& owner)
        {
            impl::call_factory<ListViewItemAutomationPeer, IListViewItemAutomationPeerFactory>([&](IListViewItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ListViewItemDataAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ListViewItemDataAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ListViewItemDataAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ListViewItemDataAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer const& parent)
        {
            impl::call_factory<ListViewItemDataAutomationPeer, IListViewItemDataAutomationPeerFactory>([&](IListViewItemDataAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MediaElementAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MediaElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MediaElementAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MediaElementAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MediaElement const& owner)
        {
            impl::call_factory<MediaElementAutomationPeer, IMediaElementAutomationPeerFactory>([&](IMediaElementAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MediaPlayerElementAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MediaPlayerElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MediaPlayerElementAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MediaPlayerElementAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MediaPlayerElement const& owner)
        {
            impl::call_factory<MediaPlayerElementAutomationPeer, IMediaPlayerElementAutomationPeerFactory>([&](IMediaPlayerElementAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MediaTransportControlsAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MediaTransportControlsAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MediaTransportControlsAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MediaTransportControlsAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MediaTransportControls const& owner)
        {
            impl::call_factory<MediaTransportControlsAutomationPeer, IMediaTransportControlsAutomationPeerFactory>([&](IMediaTransportControlsAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MenuBarAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MenuBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MenuBarAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MenuBarAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MenuBar const& owner)
        {
            impl::call_factory<MenuBarAutomationPeer, IMenuBarAutomationPeerFactory>([&](IMenuBarAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstance(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MenuBarItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IExpandCollapseProvider, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MenuBarItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MenuBarItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MenuBarItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MenuBarItem const& owner)
        {
            impl::call_factory<MenuBarItemAutomationPeer, IMenuBarItemAutomationPeerFactory>([&](IMenuBarItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstance(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MenuFlyoutItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MenuFlyoutItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MenuFlyoutItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MenuFlyoutItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MenuFlyoutItem const& owner)
        {
            impl::call_factory<MenuFlyoutItemAutomationPeer, IMenuFlyoutItemAutomationPeerFactory>([&](IMenuFlyoutItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct MenuFlyoutPresenterAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, MenuFlyoutPresenterAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = MenuFlyoutPresenterAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        MenuFlyoutPresenterAutomationPeerT(winrt::Windows::UI::Xaml::Controls::MenuFlyoutPresenter const& owner)
        {
            impl::call_factory<MenuFlyoutPresenterAutomationPeer, IMenuFlyoutPresenterAutomationPeerFactory>([&](IMenuFlyoutPresenterAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct NavigationViewItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, NavigationViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = NavigationViewItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        NavigationViewItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::NavigationViewItem const& owner)
        {
            impl::call_factory<NavigationViewItemAutomationPeer, INavigationViewItemAutomationPeerFactory>([&](INavigationViewItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct PasswordBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, PasswordBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = PasswordBoxAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        PasswordBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::PasswordBox const& owner)
        {
            impl::call_factory<PasswordBoxAutomationPeer, IPasswordBoxAutomationPeerFactory>([&](IPasswordBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct PersonPictureAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, PersonPictureAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = PersonPictureAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        PersonPictureAutomationPeerT(winrt::Windows::UI::Xaml::Controls::PersonPicture const& owner)
        {
            impl::call_factory<PersonPictureAutomationPeer, IPersonPictureAutomationPeerFactory>([&](IPersonPictureAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ProgressBarAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ProgressBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ProgressBarAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ProgressBarAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ProgressBar const& owner)
        {
            impl::call_factory<ProgressBarAutomationPeer, IProgressBarAutomationPeerFactory>([&](IProgressBarAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct ProgressRingAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ProgressRingAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ProgressRingAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ProgressRingAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ProgressRing const& owner)
        {
            impl::call_factory<ProgressRingAutomationPeer, IProgressRingAutomationPeerFactory>([&](IProgressRingAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RadioButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RadioButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RadioButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RadioButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::RadioButton const& owner)
        {
            impl::call_factory<RadioButtonAutomationPeer, IRadioButtonAutomationPeerFactory>([&](IRadioButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RangeBaseAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RangeBaseAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RangeBaseAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::RangeBase const& owner)
        {
            impl::call_factory<RangeBaseAutomationPeer, IRangeBaseAutomationPeerFactory>([&](IRangeBaseAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct RatingControlAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RatingControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RatingControlAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RatingControlAutomationPeerT(winrt::Windows::UI::Xaml::Controls::RatingControl const& owner)
        {
            impl::call_factory<RatingControlAutomationPeer, IRatingControlAutomationPeerFactory>([&](IRatingControlAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RepeatButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IInvokeProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RepeatButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RepeatButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RepeatButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::RepeatButton const& owner)
        {
            impl::call_factory<RepeatButtonAutomationPeer, IRepeatButtonAutomationPeerFactory>([&](IRepeatButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RichEditBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RichEditBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RichEditBoxAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RichEditBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::RichEditBox const& owner)
        {
            impl::call_factory<RichEditBoxAutomationPeer, IRichEditBoxAutomationPeerFactory>([&](IRichEditBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RichTextBlockAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RichTextBlockAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RichTextBlockAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RichTextBlockAutomationPeerT(winrt::Windows::UI::Xaml::Controls::RichTextBlock const& owner)
        {
            impl::call_factory<RichTextBlockAutomationPeer, IRichTextBlockAutomationPeerFactory>([&](IRichTextBlockAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct RichTextBlockOverflowAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, RichTextBlockOverflowAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = RichTextBlockOverflowAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        RichTextBlockOverflowAutomationPeerT(winrt::Windows::UI::Xaml::Controls::RichTextBlockOverflow const& owner)
        {
            impl::call_factory<RichTextBlockOverflowAutomationPeer, IRichTextBlockOverflowAutomationPeerFactory>([&](IRichTextBlockOverflowAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ScrollBarAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ScrollBarAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ScrollBarAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ScrollBarAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::ScrollBar const& owner)
        {
            impl::call_factory<ScrollBarAutomationPeer, IScrollBarAutomationPeerFactory>([&](IScrollBarAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct ScrollViewerAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IScrollProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ScrollViewerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ScrollViewerAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ScrollViewerAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ScrollViewer const& owner)
        {
            impl::call_factory<ScrollViewerAutomationPeer, IScrollViewerAutomationPeerFactory>([&](IScrollViewerAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SearchBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SearchBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SearchBoxAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SearchBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::SearchBox const& owner)
        {
            impl::call_factory<SearchBoxAutomationPeer, ISearchBoxAutomationPeerFactory>([&](ISearchBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SelectorAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SelectorAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SelectorAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::Selector const& owner)
        {
            impl::call_factory<SelectorAutomationPeer, ISelectorAutomationPeerFactory>([&](ISelectorAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SelectorItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IVirtualizedItemProvider, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SelectorItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SelectorItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SelectorItemAutomationPeerT(winrt::Windows::Foundation::IInspectable const& item, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer const& parent)
        {
            impl::call_factory<SelectorItemAutomationPeer, ISelectorItemAutomationPeerFactory>([&](ISelectorItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithParentAndItem(item, parent, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SemanticZoomAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SemanticZoomAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SemanticZoomAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SemanticZoomAutomationPeerT(winrt::Windows::UI::Xaml::Controls::SemanticZoom const& owner)
        {
            impl::call_factory<SemanticZoomAutomationPeer, ISemanticZoomAutomationPeerFactory>([&](ISemanticZoomAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SettingsFlyoutAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SettingsFlyoutAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SettingsFlyoutAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SettingsFlyoutAutomationPeerT(winrt::Windows::UI::Xaml::Controls::SettingsFlyout const& owner)
        {
            impl::call_factory<SettingsFlyoutAutomationPeer, ISettingsFlyoutAutomationPeerFactory>([&](ISettingsFlyoutAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct SliderAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, SliderAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = SliderAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        SliderAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Slider const& owner)
        {
            impl::call_factory<SliderAutomationPeer, ISliderAutomationPeerFactory>([&](ISliderAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
        using impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Provider::IRangeValueProvider>::SetValue;
        using impl::consume_t<D, winrt::Windows::UI::Xaml::IDependencyObject>::SetValue;
    };
    template <typename D, typename... Interfaces>
    struct TextBlockAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, TextBlockAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = TextBlockAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        TextBlockAutomationPeerT(winrt::Windows::UI::Xaml::Controls::TextBlock const& owner)
        {
            impl::call_factory<TextBlockAutomationPeer, ITextBlockAutomationPeerFactory>([&](ITextBlockAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct TextBoxAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, TextBoxAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = TextBoxAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        TextBoxAutomationPeerT(winrt::Windows::UI::Xaml::Controls::TextBox const& owner)
        {
            impl::call_factory<TextBoxAutomationPeer, ITextBoxAutomationPeerFactory>([&](ITextBoxAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ThumbAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ThumbAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ThumbAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ThumbAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::Thumb const& owner)
        {
            impl::call_factory<ThumbAutomationPeer, IThumbAutomationPeerFactory>([&](IThumbAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct TimePickerAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, TimePickerAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = TimePickerAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        TimePickerAutomationPeerT(winrt::Windows::UI::Xaml::Controls::TimePicker const& owner)
        {
            impl::call_factory<TimePickerAutomationPeer, ITimePickerAutomationPeerFactory>([&](ITimePickerAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ToggleButtonAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ToggleButtonAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ToggleButtonAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ToggleButtonAutomationPeerT(winrt::Windows::UI::Xaml::Controls::Primitives::ToggleButton const& owner)
        {
            impl::call_factory<ToggleButtonAutomationPeer, IToggleButtonAutomationPeerFactory>([&](IToggleButtonAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ToggleMenuFlyoutItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ToggleMenuFlyoutItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ToggleMenuFlyoutItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ToggleMenuFlyoutItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem const& owner)
        {
            impl::call_factory<ToggleMenuFlyoutItemAutomationPeer, IToggleMenuFlyoutItemAutomationPeerFactory>([&](IToggleMenuFlyoutItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct ToggleSwitchAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IToggleProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, ToggleSwitchAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = ToggleSwitchAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        ToggleSwitchAutomationPeerT(winrt::Windows::UI::Xaml::Controls::ToggleSwitch const& owner)
        {
            impl::call_factory<ToggleSwitchAutomationPeer, IToggleSwitchAutomationPeerFactory>([&](IToggleSwitchAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct TreeViewItemAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::IExpandCollapseProvider, winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, TreeViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = TreeViewItemAutomationPeer;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        TreeViewItemAutomationPeerT(winrt::Windows::UI::Xaml::Controls::TreeViewItem const& owner)
        {
            impl::call_factory<TreeViewItemAutomationPeer, ITreeViewItemAutomationPeerFactory>([&](ITreeViewItemAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
    template <typename D, typename... Interfaces>
    struct TreeViewListAutomationPeerT :
        implements<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9, composing, Interfaces...>,
        impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Provider::ISelectionProvider, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Provider::IItemContainerProvider, winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9, winrt::Windows::UI::Xaml::IDependencyObject, winrt::Windows::UI::Xaml::IDependencyObject2>,
        protected impl::require<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>,
        impl::base<D, TreeViewListAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer, winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer, winrt::Windows::UI::Xaml::DependencyObject>,
        winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverridesT<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8T<D>, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9T<D>
    {
        using composable = TreeViewListAutomationPeer;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2>;
        friend impl::consume_t<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::require_one<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8>;
        friend impl::produce<D, winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9>;
    protected:
        TreeViewListAutomationPeerT(winrt::Windows::UI::Xaml::Controls::TreeViewList const& owner)
        {
            impl::call_factory<TreeViewListAutomationPeer, ITreeViewListAutomationPeerFactory>([&](ITreeViewListAutomationPeerFactory const& f) { [[maybe_unused]] auto winrt_impl_discarded = f.CreateInstanceWithOwner(owner, *this, this->m_inner); });
        }
    };
}
namespace std
{
#ifndef WINRT_LEAN_AND_MEAN
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAppBarToggleButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutoSuggestBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer5> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer6> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer7> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer8> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeer9> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerAnnotationStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides5> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides6> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides8> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerOverrides9> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerProtected> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IAutomationPeerStatics3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IButtonBaseAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICalendarDatePickerAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICaptureElementAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ICheckBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IColorPickerSliderAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IColorSpectrumAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IComboBoxItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IDatePickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlipViewItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFlyoutPresenterAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IFrameworkElementAutomationPeerStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewHeaderItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGridViewItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IGroupItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHubAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHubSectionAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IHyperlinkButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IImageAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IInkToolbarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeer2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IItemsControlAutomationPeerOverrides2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListBoxItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListPickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewBaseHeaderItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewHeaderItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IListViewItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ILoopingSelectorItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMapControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaElementAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaPlayerElementAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMediaTransportControlsAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuBarItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IMenuFlyoutPresenterAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::INavigationViewItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPasswordBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPersonPictureAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IPivotItemDataAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IProgressBarAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IProgressRingAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRadioButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRangeBaseAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRatingControlAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRepeatButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichEditBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IRichTextBlockOverflowAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IScrollBarAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IScrollViewerAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISearchBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISelectorItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISemanticZoomAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISettingsFlyoutAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ISliderAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITextBlockAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITextBoxAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IThumbAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITimePickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleButtonAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleMenuFlyoutItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::IToggleSwitchAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewItemAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ITreeViewListAutomationPeerFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AppBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AppBarButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AppBarToggleButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AutoSuggestBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::AutomationPeerAnnotation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ButtonBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::CalendarDatePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::CaptureElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::CheckBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ColorPickerSliderAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ColorSpectrumAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ComboBoxItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::DatePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::DatePickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::FlipViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::FlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::FrameworkElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::GridViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::GridViewHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::GridViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::GroupItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::HubAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::HubSectionAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::HyperlinkButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ImageAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::InkToolbarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ItemsControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListBoxItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListPickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewBaseHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewHeaderItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ListViewItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::LoopingSelectorAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::LoopingSelectorItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::LoopingSelectorItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MapControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MediaElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MediaPlayerElementAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MediaTransportControlsAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MenuBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MenuBarItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::MenuFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::NavigationViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PasswordBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PersonPictureAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PivotAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PivotItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::PivotItemDataAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ProgressBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ProgressRingAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RadioButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RatingControlAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RepeatButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RichEditBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::RichTextBlockOverflowAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ScrollBarAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ScrollViewerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SearchBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SelectorAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SelectorItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SemanticZoomAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SettingsFlyoutAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::SliderAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TextBlockAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TextBoxAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ThumbAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TimePickerAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TimePickerFlyoutPresenterAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ToggleButtonAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ToggleMenuFlyoutItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::ToggleSwitchAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TreeViewItemAutomationPeer> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Xaml::Automation::Peers::TreeViewListAutomationPeer> : winrt::impl::hash_base {};
#endif
#ifdef __cpp_lib_format
#endif
}
#endif
