// C++/WinRT v3.0.260818.1

// SPDX-License-Identifier: MIT OR Apache-2.0
// SPDX-FileCopyrightText: Copyright (c) Microsoft Corporation
//
// Generated using .winmd files from https://github.com/microsoft/windows-rs
//

#pragma once
#ifndef WINRT_Windows_UI_Composition_H
#define WINRT_Windows_UI_Composition_H
#ifndef WINRT_IMPORT_MODULE

#ifndef WINRT_IMPL_BUILD_MODULE
#include "winrt/base.h"
static_assert(winrt::check_version(CPPWINRT_VERSION, "3.0.260818.1"), "Mismatched C++/WinRT headers.");
#define CPPWINRT_VERSION "3.0.260818.1"
#include "winrt/Windows.UI.h"
#include "winrt/impl/Windows.Foundation.2.h"
#include "winrt/impl/Windows.Foundation.Collections.2.h"
#include "winrt/impl/Windows.Foundation.Numerics.2.h"
#include "winrt/impl/Windows.Graphics.2.h"
#include "winrt/impl/Windows.Graphics.DirectX.2.h"
#include "winrt/impl/Windows.Graphics.Effects.2.h"
#include "winrt/impl/Windows.System.2.h"
#include "winrt/impl/Windows.UI.2.h"
#include "winrt/impl/Windows.UI.Core.2.h"
#include "winrt/impl/Windows.UI.Composition.2.h"
#endif // WINRT_IMPL_BUILD_MODULE
WINRT_EXPORT namespace winrt::impl
{
    template <typename D> auto consume_Windows_UI_Composition_IAmbientLight<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::IAmbientLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAmbientLight>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAmbientLight<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAmbientLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAmbientLight>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IAmbientLight2<D>::Intensity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IAmbientLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAmbientLight2>::get_Intensity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAmbientLight2<D>::Intensity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAmbientLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAmbientLight2>::put_Intensity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::PlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::get_PlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::PlaybackRate(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::put_PlaybackRate, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::Progress() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::get_Progress, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::Progress(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::put_Progress, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::ProgressBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationControllerProgressBehavior value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::get_ProgressBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::ProgressBehavior(winrt::Windows::UI::Composition::AnimationControllerProgressBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::put_ProgressBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::Pause() const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::Pause);
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationController<D>::Resume() const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationController, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationController>::Resume);
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationControllerStatics<D>::MaxPlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationControllerStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationControllerStatics>::get_MaxPlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationControllerStatics<D>::MinPlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationControllerStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationControllerStatics>::get_MinPlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationObject<D>::PopulatePropertyInfo(param::hstring const& propertyName, winrt::Windows::UI::Composition::AnimationPropertyInfo const& propertyInfo) const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationObject>::PopulatePropertyInfo, *(void**)(&propertyName), *(void**)(&propertyInfo));
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationPropertyInfo<D>::AccessMode() const
    {
        winrt::Windows::UI::Composition::AnimationPropertyAccessMode value{};
        consume_general<winrt::Windows::UI::Composition::IAnimationPropertyInfo, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationPropertyInfo>::get_AccessMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationPropertyInfo<D>::AccessMode(winrt::Windows::UI::Composition::AnimationPropertyAccessMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IAnimationPropertyInfo, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationPropertyInfo>::put_AccessMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationPropertyInfo2<D>::GetResolvedCompositionObject() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::IAnimationPropertyInfo2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationPropertyInfo2>::GetResolvedCompositionObject, &result);
        return winrt::Windows::UI::Composition::CompositionObject{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IAnimationPropertyInfo2<D>::GetResolvedCompositionObjectProperty() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::IAnimationPropertyInfo2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IAnimationPropertyInfo2>::GetResolvedCompositionObjectProperty, &result);
        return hstring{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IBackEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::IBackEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBackEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBackEasingFunction<D>::Amplitude() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBackEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBackEasingFunction>::get_Amplitude, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBooleanKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBooleanKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBooleanKeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::IBounceEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceEasingFunction<D>::Bounces() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IBounceEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceEasingFunction>::get_Bounces, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceEasingFunction<D>::Bounciness() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceEasingFunction>::get_Bounciness, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceScalarNaturalMotionAnimation<D>::Acceleration() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation>::get_Acceleration, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceScalarNaturalMotionAnimation<D>::Acceleration(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation>::put_Acceleration, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceScalarNaturalMotionAnimation<D>::Restitution() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation>::get_Restitution, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceScalarNaturalMotionAnimation<D>::Restitution(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation>::put_Restitution, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector2NaturalMotionAnimation<D>::Acceleration() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation>::get_Acceleration, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector2NaturalMotionAnimation<D>::Acceleration(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation>::put_Acceleration, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector2NaturalMotionAnimation<D>::Restitution() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation>::get_Restitution, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector2NaturalMotionAnimation<D>::Restitution(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation>::put_Restitution, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector3NaturalMotionAnimation<D>::Acceleration() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation>::get_Acceleration, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector3NaturalMotionAnimation<D>::Acceleration(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation>::put_Acceleration, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector3NaturalMotionAnimation<D>::Restitution() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation>::get_Restitution, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IBounceVector3NaturalMotionAnimation<D>::Restitution(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation>::put_Restitution, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICircleEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::ICircleEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICircleEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IColorKeyFrameAnimation<D>::InterpolationColorSpace() const
    {
        winrt::Windows::UI::Composition::CompositionColorSpace value{};
        consume_general<winrt::Windows::UI::Composition::IColorKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IColorKeyFrameAnimation>::get_InterpolationColorSpace, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IColorKeyFrameAnimation<D>::InterpolationColorSpace(winrt::Windows::UI::Composition::CompositionColorSpace const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IColorKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IColorKeyFrameAnimation>::put_InterpolationColorSpace, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IColorKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IColorKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IColorKeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IColorKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::UI::Color const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IColorKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IColorKeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, impl::bind_in(value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::ClearAllParameters() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::ClearAllParameters);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::ClearParameter(param::hstring const& key) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::ClearParameter, *(void**)(&key));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetColorParameter(param::hstring const& key, winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetColorParameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetMatrix3x2Parameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetMatrix3x2Parameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetMatrix4x4Parameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::float4x4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetMatrix4x4Parameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetQuaternionParameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::quaternion const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetQuaternionParameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetReferenceParameter(param::hstring const& key, winrt::Windows::UI::Composition::CompositionObject const& compositionObject) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetReferenceParameter, *(void**)(&key), *(void**)(&compositionObject));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetScalarParameter(param::hstring const& key, float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetScalarParameter, *(void**)(&key), value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetVector2Parameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetVector2Parameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetVector3Parameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetVector3Parameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation<D>::SetVector4Parameter(param::hstring const& key, winrt::Windows::Foundation::Numerics::float4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation>::SetVector4Parameter, *(void**)(&key), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation2<D>::SetBooleanParameter(param::hstring const& key, bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation2>::SetBooleanParameter, *(void**)(&key), value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation2<D>::Target() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation2>::get_Target, &value);
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation2<D>::Target(param::hstring const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation2>::put_Target, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation3<D>::InitialValueExpressions() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation3>::get_InitialValueExpressions, &value);
        return winrt::Windows::UI::Composition::InitialValueExpressionCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimation4<D>::SetExpressionReferenceParameter(param::hstring const& parameterName, winrt::Windows::UI::Composition::IAnimationObject const& source) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimation4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimation4>::SetExpressionReferenceParameter, *(void**)(&parameterName), *(void**)(&source));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimationGroup<D>::Count() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimationGroup, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimationGroup>::get_Count, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimationGroup<D>::Add(winrt::Windows::UI::Composition::CompositionAnimation const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimationGroup, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimationGroup>::Add, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimationGroup<D>::Remove(winrt::Windows::UI::Composition::CompositionAnimation const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimationGroup, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimationGroup>::Remove, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionAnimationGroup<D>::RemoveAll() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionAnimationGroup, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionAnimationGroup>::RemoveAll);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilities<D>::AreEffectsSupported() const
    {
        bool result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCapabilities, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCapabilities>::AreEffectsSupported, &result);
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilities<D>::AreEffectsFast() const
    {
        bool result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCapabilities, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCapabilities>::AreEffectsFast, &result);
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilities<D>::Changed(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionCapabilities, winrt::Windows::Foundation::IInspectable> const& handler) const
    {
        winrt::event_token token{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCapabilities, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCapabilities>::add_Changed, *(void**)(&handler), put_abi(token));
        return token;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilities<D>::Changed(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionCapabilities, winrt::Windows::Foundation::IInspectable> const& handler) const
    {
        return impl::make_event_revoker<D, Changed_revoker>(this, Changed(handler));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilities<D>::Changed(winrt::event_token const& token) const noexcept
    {
        consume_noexcept_remove_overload<winrt::Windows::UI::Composition::ICompositionCapabilities, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCapabilities>::remove_Changed, impl::bind_in(token));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCapabilitiesStatics<D>::GetForCurrentView() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCapabilitiesStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCapabilitiesStatics>::GetForCurrentView, &result);
        return winrt::Windows::UI::Composition::CompositionCapabilities{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::AnchorPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_AnchorPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::AnchorPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_AnchorPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::CenterPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_CenterPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::CenterPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_CenterPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::RotationAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_RotationAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::RotationAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_RotationAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::RotationAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_RotationAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::RotationAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_RotationAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::Scale() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_Scale, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::Scale(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_Scale, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::TransformMatrix() const
    {
        winrt::Windows::Foundation::Numerics::float3x2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::get_TransformMatrix, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionClip2<D>::TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionClip2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionClip2>::put_TransformMatrix, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorBrush<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionColorBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorBrush>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorBrush<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionColorBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorBrush>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorGradientStop<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionColorGradientStop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorGradientStop>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorGradientStop<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionColorGradientStop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorGradientStop>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorGradientStop<D>::Offset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionColorGradientStop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorGradientStop>::get_Offset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionColorGradientStop<D>::Offset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionColorGradientStop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionColorGradientStop>::put_Offset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCommitBatch<D>::IsActive() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCommitBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCommitBatch>::get_IsActive, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCommitBatch<D>::IsEnded() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCommitBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCommitBatch>::get_IsEnded, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCommitBatch<D>::Completed(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const& handler) const
    {
        winrt::event_token token{};
        consume_general<winrt::Windows::UI::Composition::ICompositionCommitBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCommitBatch>::add_Completed, *(void**)(&handler), put_abi(token));
        return token;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCommitBatch<D>::Completed(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, Completed_revoker>(this, Completed(handler));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionCommitBatch<D>::Completed(winrt::event_token const& token) const noexcept
    {
        consume_noexcept_remove_overload<winrt::Windows::UI::Composition::ICompositionCommitBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionCommitBatch>::remove_Completed, impl::bind_in(token));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionContainerShape<D>::Shapes() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionContainerShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionContainerShape>::get_Shapes, &value);
        return winrt::Windows::UI::Composition::CompositionShapeCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface<D>::AlphaMode() const
    {
        winrt::Windows::Graphics::DirectX::DirectXAlphaMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface>::get_AlphaMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface<D>::PixelFormat() const
    {
        winrt::Windows::Graphics::DirectX::DirectXPixelFormat value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface>::get_PixelFormat, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface<D>::Size() const
    {
        winrt::Windows::Foundation::Size value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface>::get_Size, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::SizeInt32() const
    {
        winrt::Windows::Graphics::SizeInt32 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::get_SizeInt32, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::Resize(winrt::Windows::Graphics::SizeInt32 const& sizePixels) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::Resize, impl::bind_in(sizePixels));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::Scroll(winrt::Windows::Graphics::PointInt32 const& offset) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::Scroll, impl::bind_in(offset));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::Scroll(winrt::Windows::Graphics::PointInt32 const& offset, winrt::Windows::Graphics::RectInt32 const& scrollRect) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::ScrollRect, impl::bind_in(offset), impl::bind_in(scrollRect));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::ScrollWithClip(winrt::Windows::Graphics::PointInt32 const& offset, winrt::Windows::Graphics::RectInt32 const& clipRect) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::ScrollWithClip, impl::bind_in(offset), impl::bind_in(clipRect));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionDrawingSurface2<D>::ScrollWithClip(winrt::Windows::Graphics::PointInt32 const& offset, winrt::Windows::Graphics::RectInt32 const& clipRect, winrt::Windows::Graphics::RectInt32 const& scrollRect) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionDrawingSurface2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionDrawingSurface2>::ScrollRectWithClip, impl::bind_in(offset), impl::bind_in(clipRect), impl::bind_in(scrollRect));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateCubicBezierEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::Foundation::Numerics::float2 const& controlPoint1, winrt::Windows::Foundation::Numerics::float2 const& controlPoint2) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateCubicBezierEasingFunction, *(void**)(&owner), impl::bind_in(controlPoint1), impl::bind_in(controlPoint2), &result);
        return winrt::Windows::UI::Composition::CubicBezierEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateLinearEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateLinearEasingFunction, *(void**)(&owner), &result);
        return winrt::Windows::UI::Composition::LinearEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateStepEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateStepEasingFunction, *(void**)(&owner), &result);
        return winrt::Windows::UI::Composition::StepEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateStepEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, std::int32_t stepCount) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateStepEasingFunctionWithStepCount, *(void**)(&owner), stepCount, &result);
        return winrt::Windows::UI::Composition::StepEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateBackEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float amplitude) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateBackEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), amplitude, &result);
        return winrt::Windows::UI::Composition::BackEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateBounceEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, std::int32_t bounces, float bounciness) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateBounceEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), bounces, bounciness, &result);
        return winrt::Windows::UI::Composition::BounceEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateCircleEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateCircleEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), &result);
        return winrt::Windows::UI::Composition::CircleEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateElasticEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, std::int32_t oscillations, float springiness) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateElasticEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), oscillations, springiness, &result);
        return winrt::Windows::UI::Composition::ElasticEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateExponentialEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float exponent) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateExponentialEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), exponent, &result);
        return winrt::Windows::UI::Composition::ExponentialEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreatePowerEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float power) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreatePowerEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), power, &result);
        return winrt::Windows::UI::Composition::PowerEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEasingFunctionStatics<D>::CreateSineEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>::CreateSineEasingFunction, *(void**)(&owner), static_cast<std::int32_t>(mode), &result);
        return winrt::Windows::UI::Composition::SineEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectBrush<D>::GetSourceParameter(param::hstring const& name) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectBrush>::GetSourceParameter, *(void**)(&name), &result);
        return winrt::Windows::UI::Composition::CompositionBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectBrush<D>::SetSourceParameter(param::hstring const& name, winrt::Windows::UI::Composition::CompositionBrush const& source) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectBrush>::SetSourceParameter, *(void**)(&name), *(void**)(&source));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectFactory<D>::CreateBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectFactory, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectFactory>::CreateBrush, &result);
        return winrt::Windows::UI::Composition::CompositionEffectBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectFactory<D>::ExtendedError() const
    {
        winrt::hresult value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectFactory, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectFactory>::get_ExtendedError, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectFactory<D>::LoadStatus() const
    {
        winrt::Windows::UI::Composition::CompositionEffectFactoryLoadStatus value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectFactory, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectFactory>::get_LoadStatus, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectSourceParameter<D>::Name() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectSourceParameter, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectSourceParameter>::get_Name, &value);
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEffectSourceParameterFactory<D>::Create(param::hstring const& name) const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEffectSourceParameterFactory, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEffectSourceParameterFactory>::Create, *(void**)(&name), &value);
        return winrt::Windows::UI::Composition::CompositionEffectSourceParameter{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEllipseGeometry<D>::Center() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEllipseGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEllipseGeometry>::get_Center, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEllipseGeometry<D>::Center(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionEllipseGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEllipseGeometry>::put_Center, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEllipseGeometry<D>::Radius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionEllipseGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEllipseGeometry>::get_Radius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionEllipseGeometry<D>::Radius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionEllipseGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionEllipseGeometry>::put_Radius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometricClip<D>::Geometry() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometricClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometricClip>::get_Geometry, &value);
        return winrt::Windows::UI::Composition::CompositionGeometry{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometricClip<D>::Geometry(winrt::Windows::UI::Composition::CompositionGeometry const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometricClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometricClip>::put_Geometry, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometricClip<D>::ViewBox() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometricClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometricClip>::get_ViewBox, &value);
        return winrt::Windows::UI::Composition::CompositionViewBox{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometricClip<D>::ViewBox(winrt::Windows::UI::Composition::CompositionViewBox const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometricClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometricClip>::put_ViewBox, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimEnd() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::get_TrimEnd, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimEnd(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::put_TrimEnd, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimOffset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::get_TrimOffset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimOffset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::put_TrimOffset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimStart() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::get_TrimStart, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGeometry<D>::TrimStart(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGeometry>::put_TrimStart, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::AnchorPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_AnchorPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::AnchorPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_AnchorPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::CenterPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_CenterPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::CenterPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_CenterPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::ColorStops() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_ColorStops, &value);
        return winrt::Windows::UI::Composition::CompositionColorGradientStopCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::ExtendMode() const
    {
        winrt::Windows::UI::Composition::CompositionGradientExtendMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_ExtendMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::ExtendMode(winrt::Windows::UI::Composition::CompositionGradientExtendMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_ExtendMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::InterpolationSpace() const
    {
        winrt::Windows::UI::Composition::CompositionColorSpace value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_InterpolationSpace, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::InterpolationSpace(winrt::Windows::UI::Composition::CompositionColorSpace const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_InterpolationSpace, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::RotationAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_RotationAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::RotationAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_RotationAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::RotationAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_RotationAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::RotationAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_RotationAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::Scale() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_Scale, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::Scale(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_Scale, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::TransformMatrix() const
    {
        winrt::Windows::Foundation::Numerics::float3x2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::get_TransformMatrix, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush<D>::TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush>::put_TransformMatrix, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush2<D>::MappingMode() const
    {
        winrt::Windows::UI::Composition::CompositionMappingMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush2>::get_MappingMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGradientBrush2<D>::MappingMode(winrt::Windows::UI::Composition::CompositionMappingMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGradientBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGradientBrush2>::put_MappingMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice<D>::CreateDrawingSurface(winrt::Windows::Foundation::Size const& sizePixels, winrt::Windows::Graphics::DirectX::DirectXPixelFormat const& pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& alphaMode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice>::CreateDrawingSurface, impl::bind_in(sizePixels), static_cast<std::int32_t>(pixelFormat), static_cast<std::int32_t>(alphaMode), &result);
        return winrt::Windows::UI::Composition::CompositionDrawingSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice<D>::RenderingDeviceReplaced(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionGraphicsDevice, winrt::Windows::UI::Composition::RenderingDeviceReplacedEventArgs> const& handler) const
    {
        winrt::event_token token{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice>::add_RenderingDeviceReplaced, *(void**)(&handler), put_abi(token));
        return token;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice<D>::RenderingDeviceReplaced(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionGraphicsDevice, winrt::Windows::UI::Composition::RenderingDeviceReplacedEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, RenderingDeviceReplaced_revoker>(this, RenderingDeviceReplaced(handler));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice<D>::RenderingDeviceReplaced(winrt::event_token const& token) const noexcept
    {
        consume_noexcept_remove_overload<winrt::Windows::UI::Composition::ICompositionGraphicsDevice, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice>::remove_RenderingDeviceReplaced, impl::bind_in(token));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice2<D>::CreateDrawingSurface2(winrt::Windows::Graphics::SizeInt32 const& sizePixels, winrt::Windows::Graphics::DirectX::DirectXPixelFormat const& pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& alphaMode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice2>::CreateDrawingSurface2, impl::bind_in(sizePixels), static_cast<std::int32_t>(pixelFormat), static_cast<std::int32_t>(alphaMode), &result);
        return winrt::Windows::UI::Composition::CompositionDrawingSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice2<D>::CreateVirtualDrawingSurface(winrt::Windows::Graphics::SizeInt32 const& sizePixels, winrt::Windows::Graphics::DirectX::DirectXPixelFormat const& pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& alphaMode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice2>::CreateVirtualDrawingSurface, impl::bind_in(sizePixels), static_cast<std::int32_t>(pixelFormat), static_cast<std::int32_t>(alphaMode), &result);
        return winrt::Windows::UI::Composition::CompositionVirtualDrawingSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice3<D>::CreateMipmapSurface(winrt::Windows::Graphics::SizeInt32 const& sizePixels, winrt::Windows::Graphics::DirectX::DirectXPixelFormat const& pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& alphaMode) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice3>::CreateMipmapSurface, impl::bind_in(sizePixels), static_cast<std::int32_t>(pixelFormat), static_cast<std::int32_t>(alphaMode), &result);
        return winrt::Windows::UI::Composition::CompositionMipmapSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice3<D>::Trim() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice3>::Trim);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionGraphicsDevice4<D>::CaptureAsync(winrt::Windows::UI::Composition::Visual const& captureVisual, winrt::Windows::Graphics::SizeInt32 const& size, winrt::Windows::Graphics::DirectX::DirectXPixelFormat const& pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& alphaMode, float sdrBoost) const
    {
        void* operation{};
        consume_general<winrt::Windows::UI::Composition::ICompositionGraphicsDevice4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionGraphicsDevice4>::CaptureAsync, *(void**)(&captureVisual), impl::bind_in(size), static_cast<std::int32_t>(pixelFormat), static_cast<std::int32_t>(alphaMode), sdrBoost, &operation);
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::UI::Composition::ICompositionSurface>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLight<D>::Targets() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLight>::get_Targets, &value);
        return winrt::Windows::UI::Composition::VisualUnorderedCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLight2<D>::ExclusionsFromTargets() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLight2>::get_ExclusionsFromTargets, &value);
        return winrt::Windows::UI::Composition::VisualUnorderedCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLight3<D>::IsEnabled() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLight3>::get_IsEnabled, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLight3<D>::IsEnabled(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLight3>::put_IsEnabled, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLineGeometry<D>::Start() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLineGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLineGeometry>::get_Start, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLineGeometry<D>::Start(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionLineGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLineGeometry>::put_Start, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLineGeometry<D>::End() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLineGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLineGeometry>::get_End, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLineGeometry<D>::End(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionLineGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLineGeometry>::put_End, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLinearGradientBrush<D>::EndPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush>::get_EndPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLinearGradientBrush<D>::EndPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush>::put_EndPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLinearGradientBrush<D>::StartPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush>::get_StartPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionLinearGradientBrush<D>::StartPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush>::put_StartPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMaskBrush<D>::Mask() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMaskBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMaskBrush>::get_Mask, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMaskBrush<D>::Mask(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionMaskBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMaskBrush>::put_Mask, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMaskBrush<D>::Source() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMaskBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMaskBrush>::get_Source, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMaskBrush<D>::Source(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionMaskBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMaskBrush>::put_Source, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMipmapSurface<D>::LevelCount() const
    {
        std::uint32_t value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMipmapSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMipmapSurface>::get_LevelCount, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMipmapSurface<D>::AlphaMode() const
    {
        winrt::Windows::Graphics::DirectX::DirectXAlphaMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMipmapSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMipmapSurface>::get_AlphaMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMipmapSurface<D>::PixelFormat() const
    {
        winrt::Windows::Graphics::DirectX::DirectXPixelFormat value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMipmapSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMipmapSurface>::get_PixelFormat, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMipmapSurface<D>::SizeInt32() const
    {
        winrt::Windows::Graphics::SizeInt32 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMipmapSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMipmapSurface>::get_SizeInt32, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionMipmapSurface<D>::GetDrawingSurfaceForLevel(std::uint32_t level) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionMipmapSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionMipmapSurface>::GetDrawingSurfaceForLevel, level, &result);
        return winrt::Windows::UI::Composition::CompositionDrawingSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::BottomInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_BottomInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::BottomInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_BottomInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::BottomInsetScale() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_BottomInsetScale, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::BottomInsetScale(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_BottomInsetScale, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::IsCenterHollow() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_IsCenterHollow, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::IsCenterHollow(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_IsCenterHollow, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::LeftInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_LeftInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::LeftInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_LeftInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::LeftInsetScale() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_LeftInsetScale, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::LeftInsetScale(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_LeftInsetScale, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::RightInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_RightInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::RightInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_RightInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::RightInsetScale() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_RightInsetScale, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::RightInsetScale(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_RightInsetScale, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::Source() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_Source, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::Source(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_Source, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::TopInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_TopInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::TopInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_TopInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::TopInsetScale() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::get_TopInsetScale, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::TopInsetScale(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::put_TopInsetScale, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::SetInsets(float inset) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::SetInsets, inset);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::SetInsets(float left, float top, float right, float bottom) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::SetInsetsWithValues, left, top, right, bottom);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::SetInsetScales(float scale) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::SetInsetScales, scale);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionNineGridBrush<D>::SetInsetScales(float left, float top, float right, float bottom) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionNineGridBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionNineGridBrush>::SetInsetScalesWithValues, left, top, right, bottom);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject<D>::Compositor() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject>::get_Compositor, &value);
        return winrt::Windows::UI::Composition::Compositor{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject<D>::Dispatcher() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject>::get_Dispatcher, &value);
        return winrt::Windows::UI::Core::CoreDispatcher{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject<D>::Properties() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject>::get_Properties, &value);
        return winrt::Windows::UI::Composition::CompositionPropertySet{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject<D>::StartAnimation(param::hstring const& propertyName, winrt::Windows::UI::Composition::CompositionAnimation const& animation) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject>::StartAnimation, *(void**)(&propertyName), *(void**)(&animation));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject<D>::StopAnimation(param::hstring const& propertyName) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject>::StopAnimation, *(void**)(&propertyName));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::Comment() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::get_Comment, &value);
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::Comment(param::hstring const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::put_Comment, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::ImplicitAnimations() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::get_ImplicitAnimations, &value);
        return winrt::Windows::UI::Composition::ImplicitAnimationCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::ImplicitAnimations(winrt::Windows::UI::Composition::ImplicitAnimationCollection const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::put_ImplicitAnimations, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::StartAnimationGroup(winrt::Windows::UI::Composition::ICompositionAnimationBase const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::StartAnimationGroup, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject2<D>::StopAnimationGroup(winrt::Windows::UI::Composition::ICompositionAnimationBase const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject2>::StopAnimationGroup, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject3<D>::DispatcherQueue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject3>::get_DispatcherQueue, &value);
        return winrt::Windows::System::DispatcherQueue{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject4<D>::TryGetAnimationController(param::hstring const& propertyName) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionObject4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject4>::TryGetAnimationController, *(void**)(&propertyName), &result);
        return winrt::Windows::UI::Composition::AnimationController{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObject5<D>::StartAnimation(param::hstring const& propertyName, winrt::Windows::UI::Composition::CompositionAnimation const& animation, winrt::Windows::UI::Composition::AnimationController const& animationController) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObject5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObject5>::StartAnimationWithController, *(void**)(&propertyName), *(void**)(&animation), *(void**)(&animationController));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObjectStatics<D>::StartAnimationWithIAnimationObject(winrt::Windows::UI::Composition::IAnimationObject const& target, param::hstring const& propertyName, winrt::Windows::UI::Composition::CompositionAnimation const& animation) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObjectStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObjectStatics>::StartAnimationWithIAnimationObject, *(void**)(&target), *(void**)(&propertyName), *(void**)(&animation));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionObjectStatics<D>::StartAnimationGroupWithIAnimationObject(winrt::Windows::UI::Composition::IAnimationObject const& target, winrt::Windows::UI::Composition::ICompositionAnimationBase const& animation) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionObjectStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionObjectStatics>::StartAnimationGroupWithIAnimationObject, *(void**)(&target), *(void**)(&animation));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPathFactory<D>::Create(winrt::Windows::Graphics::IGeometrySource2D const& source) const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPathFactory, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPathFactory>::Create, *(void**)(&source), &value);
        return winrt::Windows::UI::Composition::CompositionPath{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPathGeometry<D>::Path() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPathGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPathGeometry>::get_Path, &value);
        return winrt::Windows::UI::Composition::CompositionPath{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPathGeometry<D>::Path(winrt::Windows::UI::Composition::CompositionPath const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPathGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPathGeometry>::put_Path, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::BlurRadiusMultiplier() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_BlurRadiusMultiplier, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::BlurRadiusMultiplier(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::put_BlurRadiusMultiplier, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::Casters() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_Casters, &value);
        return winrt::Windows::UI::Composition::CompositionProjectedShadowCasterCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::LightSource() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_LightSource, &value);
        return winrt::Windows::UI::Composition::CompositionLight{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::LightSource(winrt::Windows::UI::Composition::CompositionLight const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::put_LightSource, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::MaxBlurRadius() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_MaxBlurRadius, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::MaxBlurRadius(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::put_MaxBlurRadius, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::MinBlurRadius() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_MinBlurRadius, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::MinBlurRadius(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::put_MinBlurRadius, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadow<D>::Receivers() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadow>::get_Receivers, &value);
        return winrt::Windows::UI::Composition::CompositionProjectedShadowReceiverUnorderedCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCaster<D>::Brush() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster>::get_Brush, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCaster<D>::Brush(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster>::put_Brush, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCaster<D>::CastingVisual() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster>::get_CastingVisual, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCaster<D>::CastingVisual(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster>::put_CastingVisual, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::Count() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::get_Count, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::InsertAbove(winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& newCaster, winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& reference) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::InsertAbove, *(void**)(&newCaster), *(void**)(&reference));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::InsertAtBottom(winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& newCaster) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::InsertAtBottom, *(void**)(&newCaster));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::InsertAtTop(winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& newCaster) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::InsertAtTop, *(void**)(&newCaster));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::InsertBelow(winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& newCaster, winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& reference) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::InsertBelow, *(void**)(&newCaster), *(void**)(&reference));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::Remove(winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const& caster) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::Remove, *(void**)(&caster));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollection<D>::RemoveAll() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>::RemoveAll);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowCasterCollectionStatics<D>::MaxRespectedCasters() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollectionStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollectionStatics>::get_MaxRespectedCasters, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiver<D>::ReceivingVisual() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver>::get_ReceivingVisual, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiver<D>::ReceivingVisual(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver>::put_ReceivingVisual, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiverUnorderedCollection<D>::Add(winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection>::Add, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiverUnorderedCollection<D>::Count() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection>::get_Count, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiverUnorderedCollection<D>::Remove(winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection>::Remove, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionProjectedShadowReceiverUnorderedCollection<D>::RemoveAll() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection>::RemoveAll);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertColor(param::hstring const& propertyName, winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertColor, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertMatrix3x2(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertMatrix3x2, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertMatrix4x4(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float4x4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertMatrix4x4, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertQuaternion(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::quaternion const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertQuaternion, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertScalar(param::hstring const& propertyName, float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertScalar, *(void**)(&propertyName), value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertVector2(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertVector2, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertVector3(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertVector3, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::InsertVector4(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::InsertVector4, *(void**)(&propertyName), impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetColor(param::hstring const& propertyName, winrt::Windows::UI::Color& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetColor, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetMatrix3x2(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float3x2& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetMatrix3x2, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetMatrix4x4(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float4x4& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetMatrix4x4, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetQuaternion(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::quaternion& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetQuaternion, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetScalar(param::hstring const& propertyName, float& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetScalar, *(void**)(&propertyName), &value, reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetVector2(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float2& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetVector2, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetVector3(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float3& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetVector3, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet<D>::TryGetVector4(param::hstring const& propertyName, winrt::Windows::Foundation::Numerics::float4& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet>::TryGetVector4, *(void**)(&propertyName), impl::bind_out(value), reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet2<D>::InsertBoolean(param::hstring const& propertyName, bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet2>::InsertBoolean, *(void**)(&propertyName), value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionPropertySet2<D>::TryGetBoolean(param::hstring const& propertyName, bool& value) const
    {
        winrt::Windows::UI::Composition::CompositionGetValueStatus result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionPropertySet2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionPropertySet2>::TryGetBoolean, *(void**)(&propertyName), &value, reinterpret_cast<std::int32_t*>(&result));
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::EllipseCenter() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::get_EllipseCenter, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::EllipseCenter(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::put_EllipseCenter, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::EllipseRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::get_EllipseRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::EllipseRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::put_EllipseRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::GradientOriginOffset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::get_GradientOriginOffset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRadialGradientBrush<D>::GradientOriginOffset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>::put_GradientOriginOffset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRectangleGeometry<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRectangleGeometry>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRectangleGeometry<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRectangleGeometry>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRectangleGeometry<D>::Size() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRectangleGeometry>::get_Size, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRectangleGeometry<D>::Size(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRectangleGeometry>::put_Size, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::CornerRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::get_CornerRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::CornerRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::put_CornerRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::Size() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::get_Size, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionRoundedRectangleGeometry<D>::Size(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>::put_Size, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::IsActive() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::get_IsActive, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::IsEnded() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::get_IsEnded, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::End() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::End);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::Resume() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::Resume);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::Suspend() const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::Suspend);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::Completed(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const& handler) const
    {
        winrt::event_token token{};
        consume_general<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::add_Completed, *(void**)(&handler), put_abi(token));
        return token;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::Completed(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, Completed_revoker>(this, Completed(handler));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionScopedBatch<D>::Completed(winrt::event_token const& token) const noexcept
    {
        consume_noexcept_remove_overload<winrt::Windows::UI::Composition::ICompositionScopedBatch, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionScopedBatch>::remove_Completed, impl::bind_in(token));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::CenterPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_CenterPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::CenterPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_CenterPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::RotationAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_RotationAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::RotationAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_RotationAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::RotationAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_RotationAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::RotationAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_RotationAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::Scale() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_Scale, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::Scale(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_Scale, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::TransformMatrix() const
    {
        winrt::Windows::Foundation::Numerics::float3x2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::get_TransformMatrix, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionShape<D>::TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionShape>::put_TransformMatrix, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::FillBrush() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_FillBrush, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::FillBrush(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_FillBrush, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::Geometry() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_Geometry, &value);
        return winrt::Windows::UI::Composition::CompositionGeometry{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::Geometry(winrt::Windows::UI::Composition::CompositionGeometry const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_Geometry, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::IsStrokeNonScaling() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_IsStrokeNonScaling, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::IsStrokeNonScaling(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_IsStrokeNonScaling, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeBrush() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeBrush, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeBrush(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeBrush, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeDashArray() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeDashArray, &value);
        return winrt::Windows::UI::Composition::CompositionStrokeDashArray{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeDashCap() const
    {
        winrt::Windows::UI::Composition::CompositionStrokeCap value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeDashCap, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeDashCap(winrt::Windows::UI::Composition::CompositionStrokeCap const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeDashCap, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeDashOffset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeDashOffset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeDashOffset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeDashOffset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeEndCap() const
    {
        winrt::Windows::UI::Composition::CompositionStrokeCap value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeEndCap, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeEndCap(winrt::Windows::UI::Composition::CompositionStrokeCap const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeEndCap, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeLineJoin() const
    {
        winrt::Windows::UI::Composition::CompositionStrokeLineJoin value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeLineJoin, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeLineJoin(winrt::Windows::UI::Composition::CompositionStrokeLineJoin const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeLineJoin, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeMiterLimit() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeMiterLimit, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeMiterLimit(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeMiterLimit, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeStartCap() const
    {
        winrt::Windows::UI::Composition::CompositionStrokeCap value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeStartCap, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeStartCap(winrt::Windows::UI::Composition::CompositionStrokeCap const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeStartCap, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeThickness() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::get_StrokeThickness, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSpriteShape<D>::StrokeThickness(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSpriteShape, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSpriteShape>::put_StrokeThickness, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSupportsSystemBackdrop<D>::SystemBackdrop() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop>::get_SystemBackdrop, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSupportsSystemBackdrop<D>::SystemBackdrop(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop>::put_SystemBackdrop, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::BitmapInterpolationMode() const
    {
        winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::get_BitmapInterpolationMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::BitmapInterpolationMode(winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::put_BitmapInterpolationMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::HorizontalAlignmentRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::get_HorizontalAlignmentRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::HorizontalAlignmentRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::put_HorizontalAlignmentRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::Stretch() const
    {
        winrt::Windows::UI::Composition::CompositionStretch value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::get_Stretch, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::Stretch(winrt::Windows::UI::Composition::CompositionStretch const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::put_Stretch, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::Surface() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::get_Surface, &value);
        return winrt::Windows::UI::Composition::ICompositionSurface{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::Surface(winrt::Windows::UI::Composition::ICompositionSurface const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::put_Surface, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::VerticalAlignmentRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::get_VerticalAlignmentRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush<D>::VerticalAlignmentRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush>::put_VerticalAlignmentRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::AnchorPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_AnchorPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::AnchorPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_AnchorPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::CenterPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_CenterPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::CenterPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_CenterPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::RotationAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_RotationAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::RotationAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_RotationAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::RotationAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_RotationAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::RotationAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_RotationAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::Scale() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_Scale, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::Scale(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_Scale, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::TransformMatrix() const
    {
        winrt::Windows::Foundation::Numerics::float3x2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::get_TransformMatrix, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush2<D>::TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>::put_TransformMatrix, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush3<D>::SnapToPixels() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush3>::get_SnapToPixels, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceBrush3<D>::SnapToPixels(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceBrush3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceBrush3>::put_SnapToPixels, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionSurfaceFacade<D>::GetRealSurface() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositionSurfaceFacade, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionSurfaceFacade>::GetRealSurface, &result);
        return winrt::Windows::UI::Composition::ICompositionSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTarget<D>::Root() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionTarget, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTarget>::get_Root, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTarget<D>::Root(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionTarget, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTarget>::put_Root, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::SourceRect() const
    {
        winrt::Windows::Graphics::RectInt32 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::get_SourceRect, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::SourceRect(winrt::Windows::Graphics::RectInt32 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::put_SourceRect, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::AlphaMode() const
    {
        winrt::Windows::Graphics::DirectX::DirectXAlphaMode value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::get_AlphaMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::AlphaMode(winrt::Windows::Graphics::DirectX::DirectXAlphaMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::put_AlphaMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::ColorSpace() const
    {
        winrt::Windows::Graphics::DirectX::DirectXColorSpace value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::get_ColorSpace, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionTexture<D>::ColorSpace(winrt::Windows::Graphics::DirectX::DirectXColorSpace const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionTexture, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionTexture>::put_ColorSpace, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::HorizontalAlignmentRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::get_HorizontalAlignmentRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::HorizontalAlignmentRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::put_HorizontalAlignmentRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Offset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Size() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::get_Size, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Size(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::put_Size, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Stretch() const
    {
        winrt::Windows::UI::Composition::CompositionStretch value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::get_Stretch, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::Stretch(winrt::Windows::UI::Composition::CompositionStretch const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::put_Stretch, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::VerticalAlignmentRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::get_VerticalAlignmentRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionViewBox<D>::VerticalAlignmentRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionViewBox, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionViewBox>::put_VerticalAlignmentRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVirtualDrawingSurface<D>::Trim(array_view<winrt::Windows::Graphics::RectInt32 const> rects) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurface>::Trim, rects.size(), get_abi(rects));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceVisual() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::get_SourceVisual, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceVisual(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::put_SourceVisual, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceOffset() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::get_SourceOffset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceOffset(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::put_SourceOffset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceSize() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::get_SourceSize, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositionVisualSurface<D>::SourceSize(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositionVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositionVisualSurface>::put_SourceSize, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateColorKeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateColorKeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::ColorKeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateColorBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateColorBrush, &result);
        return winrt::Windows::UI::Composition::CompositionColorBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateColorBrush(winrt::Windows::UI::Color const& color) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateColorBrushWithColor, impl::bind_in(color), &result);
        return winrt::Windows::UI::Composition::CompositionColorBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateContainerVisual() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateContainerVisual, &result);
        return winrt::Windows::UI::Composition::ContainerVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateCubicBezierEasingFunction(winrt::Windows::Foundation::Numerics::float2 const& controlPoint1, winrt::Windows::Foundation::Numerics::float2 const& controlPoint2) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateCubicBezierEasingFunction, impl::bind_in(controlPoint1), impl::bind_in(controlPoint2), &result);
        return winrt::Windows::UI::Composition::CubicBezierEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateEffectFactory(winrt::Windows::Graphics::Effects::IGraphicsEffect const& graphicsEffect) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateEffectFactory, *(void**)(&graphicsEffect), &result);
        return winrt::Windows::UI::Composition::CompositionEffectFactory{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateEffectFactory(winrt::Windows::Graphics::Effects::IGraphicsEffect const& graphicsEffect, param::iterable<hstring> const& animatableProperties) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateEffectFactoryWithProperties, *(void**)(&graphicsEffect), *(void**)(&animatableProperties), &result);
        return winrt::Windows::UI::Composition::CompositionEffectFactory{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateExpressionAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateExpressionAnimation, &result);
        return winrt::Windows::UI::Composition::ExpressionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateExpressionAnimation(param::hstring const& expression) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateExpressionAnimationWithExpression, *(void**)(&expression), &result);
        return winrt::Windows::UI::Composition::ExpressionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateInsetClip() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateInsetClip, &result);
        return winrt::Windows::UI::Composition::InsetClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateInsetClip(float leftInset, float topInset, float rightInset, float bottomInset) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateInsetClipWithInsets, leftInset, topInset, rightInset, bottomInset, &result);
        return winrt::Windows::UI::Composition::InsetClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateLinearEasingFunction() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateLinearEasingFunction, &result);
        return winrt::Windows::UI::Composition::LinearEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreatePropertySet() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreatePropertySet, &result);
        return winrt::Windows::UI::Composition::CompositionPropertySet{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateQuaternionKeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateQuaternionKeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::QuaternionKeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateScalarKeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateScalarKeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::ScalarKeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateScopedBatch(winrt::Windows::UI::Composition::CompositionBatchTypes const& batchType) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateScopedBatch, static_cast<std::uint32_t>(batchType), &result);
        return winrt::Windows::UI::Composition::CompositionScopedBatch{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateSpriteVisual() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateSpriteVisual, &result);
        return winrt::Windows::UI::Composition::SpriteVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateSurfaceBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateSurfaceBrush, &result);
        return winrt::Windows::UI::Composition::CompositionSurfaceBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateSurfaceBrush(winrt::Windows::UI::Composition::ICompositionSurface const& surface) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateSurfaceBrushWithSurface, *(void**)(&surface), &result);
        return winrt::Windows::UI::Composition::CompositionSurfaceBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateTargetForCurrentView() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateTargetForCurrentView, &result);
        return winrt::Windows::UI::Composition::CompositionTarget{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateVector2KeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateVector2KeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::Vector2KeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateVector3KeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateVector3KeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::Vector3KeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::CreateVector4KeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::CreateVector4KeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::Vector4KeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor<D>::GetCommitBatch(winrt::Windows::UI::Composition::CompositionBatchTypes const& batchType) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor>::GetCommitBatch, static_cast<std::uint32_t>(batchType), &result);
        return winrt::Windows::UI::Composition::CompositionCommitBatch{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateAmbientLight() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateAmbientLight, &result);
        return winrt::Windows::UI::Composition::AmbientLight{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateAnimationGroup() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateAnimationGroup, &result);
        return winrt::Windows::UI::Composition::CompositionAnimationGroup{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateBackdropBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateBackdropBrush, &result);
        return winrt::Windows::UI::Composition::CompositionBackdropBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateDistantLight() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateDistantLight, &result);
        return winrt::Windows::UI::Composition::DistantLight{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateDropShadow() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateDropShadow, &result);
        return winrt::Windows::UI::Composition::DropShadow{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateImplicitAnimationCollection() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateImplicitAnimationCollection, &result);
        return winrt::Windows::UI::Composition::ImplicitAnimationCollection{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateLayerVisual() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateLayerVisual, &result);
        return winrt::Windows::UI::Composition::LayerVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateMaskBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateMaskBrush, &result);
        return winrt::Windows::UI::Composition::CompositionMaskBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateNineGridBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateNineGridBrush, &result);
        return winrt::Windows::UI::Composition::CompositionNineGridBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreatePointLight() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreatePointLight, &result);
        return winrt::Windows::UI::Composition::PointLight{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateSpotLight() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateSpotLight, &result);
        return winrt::Windows::UI::Composition::SpotLight{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateStepEasingFunction() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateStepEasingFunction, &result);
        return winrt::Windows::UI::Composition::StepEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor2<D>::CreateStepEasingFunction(std::int32_t stepCount) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor2>::CreateStepEasingFunctionWithStepCount, stepCount, &result);
        return winrt::Windows::UI::Composition::StepEasingFunction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor3<D>::CreateHostBackdropBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor3>::CreateHostBackdropBrush, &result);
        return winrt::Windows::UI::Composition::CompositionBackdropBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateColorGradientStop() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateColorGradientStop, &result);
        return winrt::Windows::UI::Composition::CompositionColorGradientStop{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateColorGradientStop(float offset, winrt::Windows::UI::Color const& color) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateColorGradientStopWithOffsetAndColor, offset, impl::bind_in(color), &result);
        return winrt::Windows::UI::Composition::CompositionColorGradientStop{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateLinearGradientBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateLinearGradientBrush, &result);
        return winrt::Windows::UI::Composition::CompositionLinearGradientBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateSpringScalarAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateSpringScalarAnimation, &result);
        return winrt::Windows::UI::Composition::SpringScalarNaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateSpringVector2Animation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateSpringVector2Animation, &result);
        return winrt::Windows::UI::Composition::SpringVector2NaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor4<D>::CreateSpringVector3Animation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor4>::CreateSpringVector3Animation, &result);
        return winrt::Windows::UI::Composition::SpringVector3NaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::Comment() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::get_Comment, &value);
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::Comment(param::hstring const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::put_Comment, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::GlobalPlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::get_GlobalPlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::GlobalPlaybackRate(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::put_GlobalPlaybackRate, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateBounceScalarAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateBounceScalarAnimation, &result);
        return winrt::Windows::UI::Composition::BounceScalarNaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateBounceVector2Animation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateBounceVector2Animation, &result);
        return winrt::Windows::UI::Composition::BounceVector2NaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateBounceVector3Animation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateBounceVector3Animation, &result);
        return winrt::Windows::UI::Composition::BounceVector3NaturalMotionAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateContainerShape() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateContainerShape, &result);
        return winrt::Windows::UI::Composition::CompositionContainerShape{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateEllipseGeometry() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateEllipseGeometry, &result);
        return winrt::Windows::UI::Composition::CompositionEllipseGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateLineGeometry() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateLineGeometry, &result);
        return winrt::Windows::UI::Composition::CompositionLineGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreatePathGeometry() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreatePathGeometry, &result);
        return winrt::Windows::UI::Composition::CompositionPathGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreatePathGeometry(winrt::Windows::UI::Composition::CompositionPath const& path) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreatePathGeometryWithPath, *(void**)(&path), &result);
        return winrt::Windows::UI::Composition::CompositionPathGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreatePathKeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreatePathKeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::PathKeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateRectangleGeometry() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateRectangleGeometry, &result);
        return winrt::Windows::UI::Composition::CompositionRectangleGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateRoundedRectangleGeometry() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateRoundedRectangleGeometry, &result);
        return winrt::Windows::UI::Composition::CompositionRoundedRectangleGeometry{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateShapeVisual() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateShapeVisual, &result);
        return winrt::Windows::UI::Composition::ShapeVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateSpriteShape() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateSpriteShape, &result);
        return winrt::Windows::UI::Composition::CompositionSpriteShape{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateSpriteShape(winrt::Windows::UI::Composition::CompositionGeometry const& geometry) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateSpriteShapeWithGeometry, *(void**)(&geometry), &result);
        return winrt::Windows::UI::Composition::CompositionSpriteShape{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::CreateViewBox() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::CreateViewBox, &result);
        return winrt::Windows::UI::Composition::CompositionViewBox{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor5<D>::RequestCommitAsync() const
    {
        void* operation{};
        consume_general<winrt::Windows::UI::Composition::ICompositor5, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor5>::RequestCommitAsync, &operation);
        return winrt::Windows::Foundation::IAsyncAction{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor6<D>::CreateGeometricClip() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor6, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor6>::CreateGeometricClip, &result);
        return winrt::Windows::UI::Composition::CompositionGeometricClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor6<D>::CreateGeometricClip(winrt::Windows::UI::Composition::CompositionGeometry const& geometry) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor6, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor6>::CreateGeometricClipWithGeometry, *(void**)(&geometry), &result);
        return winrt::Windows::UI::Composition::CompositionGeometricClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor6<D>::CreateRedirectVisual() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor6, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor6>::CreateRedirectVisual, &result);
        return winrt::Windows::UI::Composition::RedirectVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor6<D>::CreateRedirectVisual(winrt::Windows::UI::Composition::Visual const& source) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor6, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor6>::CreateRedirectVisualWithSourceVisual, *(void**)(&source), &result);
        return winrt::Windows::UI::Composition::RedirectVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor6<D>::CreateBooleanKeyFrameAnimation() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor6, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor6>::CreateBooleanKeyFrameAnimation, &result);
        return winrt::Windows::UI::Composition::BooleanKeyFrameAnimation{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor7<D>::DispatcherQueue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ICompositor7, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor7>::get_DispatcherQueue, &value);
        return winrt::Windows::System::DispatcherQueue{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor7<D>::CreateAnimationPropertyInfo() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor7, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor7>::CreateAnimationPropertyInfo, &result);
        return winrt::Windows::UI::Composition::AnimationPropertyInfo{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor7<D>::CreateRectangleClip() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor7, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor7>::CreateRectangleClip, &result);
        return winrt::Windows::UI::Composition::RectangleClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor7<D>::CreateRectangleClip(float left, float top, float right, float bottom) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor7, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor7>::CreateRectangleClipWithSides, left, top, right, bottom, &result);
        return winrt::Windows::UI::Composition::RectangleClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor7<D>::CreateRectangleClip(float left, float top, float right, float bottom, winrt::Windows::Foundation::Numerics::float2 const& topLeftRadius, winrt::Windows::Foundation::Numerics::float2 const& topRightRadius, winrt::Windows::Foundation::Numerics::float2 const& bottomRightRadius, winrt::Windows::Foundation::Numerics::float2 const& bottomLeftRadius) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor7, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor7>::CreateRectangleClipWithSidesAndRadius, left, top, right, bottom, impl::bind_in(topLeftRadius), impl::bind_in(topRightRadius), impl::bind_in(bottomRightRadius), impl::bind_in(bottomLeftRadius), &result);
        return winrt::Windows::UI::Composition::RectangleClip{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositor8<D>::CreateAnimationController() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositor8, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositor8>::CreateAnimationController, &result);
        return winrt::Windows::UI::Composition::AnimationController{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorStatics<D>::MaxGlobalPlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositorStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorStatics>::get_MaxGlobalPlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorStatics<D>::MinGlobalPlaybackRate() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ICompositorStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorStatics>::get_MinGlobalPlaybackRate, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithBlurredWallpaperBackdropBrush<D>::TryCreateBlurredWallpaperBackdropBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithBlurredWallpaperBackdropBrush, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithBlurredWallpaperBackdropBrush>::TryCreateBlurredWallpaperBackdropBrush, &result);
        return winrt::Windows::UI::Composition::CompositionBackdropBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithProjectedShadow<D>::CreateProjectedShadowCaster() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow>::CreateProjectedShadowCaster, &result);
        return winrt::Windows::UI::Composition::CompositionProjectedShadowCaster{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithProjectedShadow<D>::CreateProjectedShadow() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow>::CreateProjectedShadow, &result);
        return winrt::Windows::UI::Composition::CompositionProjectedShadow{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithProjectedShadow<D>::CreateProjectedShadowReceiver() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow>::CreateProjectedShadowReceiver, &result);
        return winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithRadialGradient<D>::CreateRadialGradientBrush() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithRadialGradient, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithRadialGradient>::CreateRadialGradientBrush, &result);
        return winrt::Windows::UI::Composition::CompositionRadialGradientBrush{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICompositorWithVisualSurface<D>::CreateVisualSurface() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::ICompositorWithVisualSurface, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICompositorWithVisualSurface>::CreateVisualSurface, &result);
        return winrt::Windows::UI::Composition::CompositionVisualSurface{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IContainerVisual<D>::Children() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IContainerVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IContainerVisual>::get_Children, &value);
        return winrt::Windows::UI::Composition::VisualCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ICubicBezierEasingFunction<D>::ControlPoint1() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICubicBezierEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICubicBezierEasingFunction>::get_ControlPoint1, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ICubicBezierEasingFunction<D>::ControlPoint2() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::ICubicBezierEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ICubicBezierEasingFunction>::get_ControlPoint2, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisual<D>::AddTrailPoints(array_view<winrt::Windows::UI::Composition::InkTrailPoint const> inkPoints) const
    {
        std::uint32_t result{};
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual>::AddTrailPoints, inkPoints.size(), get_abi(inkPoints), &result);
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisual<D>::AddTrailPointsWithPrediction(array_view<winrt::Windows::UI::Composition::InkTrailPoint const> inkPoints, array_view<winrt::Windows::UI::Composition::InkTrailPoint const> predictedInkPoints) const
    {
        std::uint32_t result{};
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual>::AddTrailPointsWithPrediction, inkPoints.size(), get_abi(inkPoints), predictedInkPoints.size(), get_abi(predictedInkPoints), &result);
        return result;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisual<D>::RemoveTrailPoints(std::uint32_t generationId) const
    {
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual>::RemoveTrailPoints, generationId);
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisual<D>::StartNewTrail(winrt::Windows::UI::Color const& color) const
    {
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual>::StartNewTrail, impl::bind_in(color));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisualStatics<D>::Create(winrt::Windows::UI::Composition::Compositor const& compositor) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics>::Create, *(void**)(&compositor), &result);
        return winrt::Windows::UI::Composition::DelegatedInkTrailVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IDelegatedInkTrailVisualStatics<D>::CreateForSwapChain(winrt::Windows::UI::Composition::Compositor const& compositor, winrt::Windows::UI::Composition::ICompositionSurface const& swapChain) const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics>::CreateForSwapChain, *(void**)(&compositor), *(void**)(&swapChain), &result);
        return winrt::Windows::UI::Composition::DelegatedInkTrailVisual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::CoordinateSpace() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::get_CoordinateSpace, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::CoordinateSpace(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::put_CoordinateSpace, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::Direction() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::get_Direction, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight<D>::Direction(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDistantLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight>::put_Direction, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight2<D>::Intensity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IDistantLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight2>::get_Intensity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDistantLight2<D>::Intensity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDistantLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDistantLight2>::put_Intensity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::BlurRadius() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::get_BlurRadius, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::BlurRadius(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::put_BlurRadius, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Mask() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::get_Mask, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Mask(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::put_Mask, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Offset(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Opacity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::get_Opacity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow<D>::Opacity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow>::put_Opacity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow2<D>::SourcePolicy() const
    {
        winrt::Windows::UI::Composition::CompositionDropShadowSourcePolicy value{};
        consume_general<winrt::Windows::UI::Composition::IDropShadow2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow2>::get_SourcePolicy, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IDropShadow2<D>::SourcePolicy(winrt::Windows::UI::Composition::CompositionDropShadowSourcePolicy const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IDropShadow2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IDropShadow2>::put_SourcePolicy, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IElasticEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::IElasticEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IElasticEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IElasticEasingFunction<D>::Oscillations() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IElasticEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IElasticEasingFunction>::get_Oscillations, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IElasticEasingFunction<D>::Springiness() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IElasticEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IElasticEasingFunction>::get_Springiness, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IExponentialEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::IExponentialEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IExponentialEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IExponentialEasingFunction<D>::Exponent() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IExponentialEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IExponentialEasingFunction>::get_Exponent, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IExpressionAnimation<D>::Expression() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IExpressionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IExpressionAnimation>::get_Expression, &value);
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IExpressionAnimation<D>::Expression(param::hstring const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IExpressionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IExpressionAnimation>::put_Expression, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::BottomInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::get_BottomInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::BottomInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::put_BottomInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::LeftInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::get_LeftInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::LeftInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::put_LeftInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::RightInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::get_RightInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::RightInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::put_RightInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::TopInset() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::get_TopInset, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IInsetClip<D>::TopInset(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IInsetClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IInsetClip>::put_TopInset, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::DelayTime() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_DelayTime, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::DelayTime(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::put_DelayTime, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::Duration() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_Duration, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::Duration(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::put_Duration, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::IterationBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationIterationBehavior value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_IterationBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::IterationBehavior(winrt::Windows::UI::Composition::AnimationIterationBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::put_IterationBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::IterationCount() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_IterationCount, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::IterationCount(std::int32_t value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::put_IterationCount, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::KeyFrameCount() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_KeyFrameCount, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::StopBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationStopBehavior value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::get_StopBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::StopBehavior(winrt::Windows::UI::Composition::AnimationStopBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::put_StopBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::InsertExpressionKeyFrame(float normalizedProgressKey, param::hstring const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::InsertExpressionKeyFrame, normalizedProgressKey, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation<D>::InsertExpressionKeyFrame(float normalizedProgressKey, param::hstring const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation>::InsertExpressionKeyFrameWithEasingFunction, normalizedProgressKey, *(void**)(&value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation2<D>::Direction() const
    {
        winrt::Windows::UI::Composition::AnimationDirection value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation2>::get_Direction, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation2<D>::Direction(winrt::Windows::UI::Composition::AnimationDirection const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation2>::put_Direction, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation3<D>::DelayBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationDelayBehavior value{};
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation3>::get_DelayBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IKeyFrameAnimation3<D>::DelayBehavior(winrt::Windows::UI::Composition::AnimationDelayBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IKeyFrameAnimation3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IKeyFrameAnimation3>::put_DelayBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ILayerVisual<D>::Effect() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ILayerVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ILayerVisual>::get_Effect, &value);
        return winrt::Windows::UI::Composition::CompositionEffectBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ILayerVisual<D>::Effect(winrt::Windows::UI::Composition::CompositionEffectBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ILayerVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ILayerVisual>::put_Effect, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ILayerVisual2<D>::Shadow() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ILayerVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ILayerVisual2>::get_Shadow, &value);
        return winrt::Windows::UI::Composition::CompositionShadow{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ILayerVisual2<D>::Shadow(winrt::Windows::UI::Composition::CompositionShadow const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ILayerVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ILayerVisual2>::put_Shadow, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::DelayBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationDelayBehavior value{};
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::get_DelayBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::DelayBehavior(winrt::Windows::UI::Composition::AnimationDelayBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::put_DelayBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::DelayTime() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::get_DelayTime, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::DelayTime(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::put_DelayTime, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::StopBehavior() const
    {
        winrt::Windows::UI::Composition::AnimationStopBehavior value{};
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::get_StopBehavior, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_INaturalMotionAnimation<D>::StopBehavior(winrt::Windows::UI::Composition::AnimationStopBehavior const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::INaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::INaturalMotionAnimation>::put_StopBehavior, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPathKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::UI::Composition::CompositionPath const& path) const
    {
        consume_general<winrt::Windows::UI::Composition::IPathKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPathKeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, *(void**)(&path));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPathKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::UI::Composition::CompositionPath const& path, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IPathKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPathKeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, *(void**)(&path), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::Color() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_Color, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::Color(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_Color, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::ConstantAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_ConstantAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::ConstantAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_ConstantAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::CoordinateSpace() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_CoordinateSpace, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::CoordinateSpace(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_CoordinateSpace, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::LinearAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_LinearAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::LinearAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_LinearAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::Offset(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::QuadraticAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::get_QuadraticAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight<D>::QuadraticAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight>::put_QuadraticAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight2<D>::Intensity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight2>::get_Intensity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight2<D>::Intensity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight2>::put_Intensity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight3<D>::MinAttenuationCutoff() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight3>::get_MinAttenuationCutoff, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight3<D>::MinAttenuationCutoff(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight3>::put_MinAttenuationCutoff, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight3<D>::MaxAttenuationCutoff() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPointLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight3>::get_MaxAttenuationCutoff, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPointLight3<D>::MaxAttenuationCutoff(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IPointLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPointLight3>::put_MaxAttenuationCutoff, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IPowerEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::IPowerEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPowerEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IPowerEasingFunction<D>::Power() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IPowerEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IPowerEasingFunction>::get_Power, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IQuaternionKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::quaternion const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IQuaternionKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::quaternion const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, impl::bind_in(value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Bottom() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_Bottom, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Bottom(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_Bottom, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::BottomLeftRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_BottomLeftRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::BottomLeftRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_BottomLeftRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::BottomRightRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_BottomRightRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::BottomRightRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_BottomRightRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Left() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_Left, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Left(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_Left, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Right() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_Right, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Right(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_Right, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Top() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_Top, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::Top(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_Top, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::TopLeftRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_TopLeftRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::TopLeftRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_TopLeftRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::TopRightRadius() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::get_TopRightRadius, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IRectangleClip<D>::TopRightRadius(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRectangleClip, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRectangleClip>::put_TopRightRadius, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRedirectVisual<D>::Source() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IRedirectVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRedirectVisual>::get_Source, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IRedirectVisual<D>::Source(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IRedirectVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRedirectVisual>::put_Source, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IRenderingDeviceReplacedEventArgs<D>::GraphicsDevice() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs>::get_GraphicsDevice, &value);
        return winrt::Windows::UI::Composition::CompositionGraphicsDevice{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IScalarKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarKeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarKeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, float value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IScalarKeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarKeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, value, *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::FinalValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::get_FinalValue, &value);
        return winrt::Windows::Foundation::IReference<float>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::FinalValue(winrt::Windows::Foundation::IReference<float> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::put_FinalValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::InitialValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::get_InitialValue, &value);
        return winrt::Windows::Foundation::IReference<float>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::InitialValue(winrt::Windows::Foundation::IReference<float> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::put_InitialValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::InitialVelocity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::get_InitialVelocity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IScalarNaturalMotionAnimation<D>::InitialVelocity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>::put_InitialVelocity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IShapeVisual<D>::Shapes() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IShapeVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IShapeVisual>::get_Shapes, &value);
        return winrt::Windows::UI::Composition::CompositionShapeCollection{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IShapeVisual<D>::ViewBox() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IShapeVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IShapeVisual>::get_ViewBox, &value);
        return winrt::Windows::UI::Composition::CompositionViewBox{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IShapeVisual<D>::ViewBox(winrt::Windows::UI::Composition::CompositionViewBox const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IShapeVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IShapeVisual>::put_ViewBox, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISineEasingFunction<D>::Mode() const
    {
        winrt::Windows::UI::Composition::CompositionEasingFunctionMode value{};
        consume_general<winrt::Windows::UI::Composition::ISineEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISineEasingFunction>::get_Mode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::ConstantAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_ConstantAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::ConstantAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_ConstantAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::CoordinateSpace() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_CoordinateSpace, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::CoordinateSpace(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_CoordinateSpace, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::Direction() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_Direction, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::Direction(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_Direction, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_InnerConeAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_InnerConeAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_InnerConeAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_InnerConeAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeColor() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_InnerConeColor, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::InnerConeColor(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_InnerConeColor, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::LinearAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_LinearAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::LinearAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_LinearAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::Offset(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_OuterConeAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_OuterConeAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_OuterConeAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_OuterConeAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeColor() const
    {
        winrt::Windows::UI::Color value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_OuterConeColor, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::OuterConeColor(winrt::Windows::UI::Color const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_OuterConeColor, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::QuadraticAttenuation() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::get_QuadraticAttenuation, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight<D>::QuadraticAttenuation(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight>::put_QuadraticAttenuation, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight2<D>::InnerConeIntensity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight2>::get_InnerConeIntensity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight2<D>::InnerConeIntensity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight2>::put_InnerConeIntensity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight2<D>::OuterConeIntensity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight2>::get_OuterConeIntensity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight2<D>::OuterConeIntensity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight2>::put_OuterConeIntensity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight3<D>::MinAttenuationCutoff() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight3>::get_MinAttenuationCutoff, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight3<D>::MinAttenuationCutoff(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight3>::put_MinAttenuationCutoff, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight3<D>::MaxAttenuationCutoff() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpotLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight3>::get_MaxAttenuationCutoff, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpotLight3<D>::MaxAttenuationCutoff(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpotLight3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpotLight3>::put_MaxAttenuationCutoff, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringScalarNaturalMotionAnimation<D>::DampingRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation>::get_DampingRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringScalarNaturalMotionAnimation<D>::DampingRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation>::put_DampingRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringScalarNaturalMotionAnimation<D>::Period() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation>::get_Period, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringScalarNaturalMotionAnimation<D>::Period(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation>::put_Period, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector2NaturalMotionAnimation<D>::DampingRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation>::get_DampingRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector2NaturalMotionAnimation<D>::DampingRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation>::put_DampingRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector2NaturalMotionAnimation<D>::Period() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation>::get_Period, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector2NaturalMotionAnimation<D>::Period(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation>::put_Period, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector3NaturalMotionAnimation<D>::DampingRatio() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation>::get_DampingRatio, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector3NaturalMotionAnimation<D>::DampingRatio(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation>::put_DampingRatio, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector3NaturalMotionAnimation<D>::Period() const
    {
        winrt::Windows::Foundation::TimeSpan value{};
        consume_general<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation>::get_Period, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpringVector3NaturalMotionAnimation<D>::Period(winrt::Windows::Foundation::TimeSpan const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation>::put_Period, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpriteVisual<D>::Brush() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ISpriteVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpriteVisual>::get_Brush, &value);
        return winrt::Windows::UI::Composition::CompositionBrush{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpriteVisual<D>::Brush(winrt::Windows::UI::Composition::CompositionBrush const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpriteVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpriteVisual>::put_Brush, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpriteVisual2<D>::Shadow() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::ISpriteVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpriteVisual2>::get_Shadow, &value);
        return winrt::Windows::UI::Composition::CompositionShadow{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_ISpriteVisual2<D>::Shadow(winrt::Windows::UI::Composition::CompositionShadow const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::ISpriteVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::ISpriteVisual2>::put_Shadow, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::FinalStep() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::get_FinalStep, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::FinalStep(std::int32_t value) const
    {
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::put_FinalStep, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::InitialStep() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::get_InitialStep, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::InitialStep(std::int32_t value) const
    {
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::put_InitialStep, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::IsFinalStepSingleFrame() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::get_IsFinalStepSingleFrame, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::IsFinalStepSingleFrame(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::put_IsFinalStepSingleFrame, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::IsInitialStepSingleFrame() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::get_IsInitialStepSingleFrame, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::IsInitialStepSingleFrame(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::put_IsInitialStepSingleFrame, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::StepCount() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::get_StepCount, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IStepEasingFunction<D>::StepCount(std::int32_t value) const
    {
        consume_general<winrt::Windows::UI::Composition::IStepEasingFunction, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IStepEasingFunction>::put_StepCount, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector2KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2KeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float2 const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector2KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2KeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, impl::bind_in(value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::FinalValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::get_FinalValue, &value);
        return winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::FinalValue(winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::put_FinalValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::InitialValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::get_InitialValue, &value);
        return winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::InitialValue(winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::put_InitialValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::InitialVelocity() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::get_InitialVelocity, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector2NaturalMotionAnimation<D>::InitialVelocity(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>::put_InitialVelocity, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector3KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3KeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float3 const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector3KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3KeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, impl::bind_in(value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::FinalValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::get_FinalValue, &value);
        return winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::FinalValue(winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::put_FinalValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::InitialValue() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::get_InitialValue, &value);
        return winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::InitialValue(winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3> const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::put_InitialValue, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::InitialVelocity() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::get_InitialVelocity, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector3NaturalMotionAnimation<D>::InitialVelocity(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>::put_InitialVelocity, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector4KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector4KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector4KeyFrameAnimation>::InsertKeyFrame, normalizedProgressKey, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVector4KeyFrameAnimation<D>::InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float4 const& value, winrt::Windows::UI::Composition::CompositionEasingFunction const& easingFunction) const
    {
        consume_general<winrt::Windows::UI::Composition::IVector4KeyFrameAnimation, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVector4KeyFrameAnimation>::InsertKeyFrameWithEasingFunction, normalizedProgressKey, impl::bind_in(value), *(void**)(&easingFunction));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::AnchorPoint() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_AnchorPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::AnchorPoint(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_AnchorPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::BackfaceVisibility() const
    {
        winrt::Windows::UI::Composition::CompositionBackfaceVisibility value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_BackfaceVisibility, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::BackfaceVisibility(winrt::Windows::UI::Composition::CompositionBackfaceVisibility const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_BackfaceVisibility, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::BorderMode() const
    {
        winrt::Windows::UI::Composition::CompositionBorderMode value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_BorderMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::BorderMode(winrt::Windows::UI::Composition::CompositionBorderMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_BorderMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::CenterPoint() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_CenterPoint, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::CenterPoint(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_CenterPoint, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Clip() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Clip, &value);
        return winrt::Windows::UI::Composition::CompositionClip{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Clip(winrt::Windows::UI::Composition::CompositionClip const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Clip, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::CompositeMode() const
    {
        winrt::Windows::UI::Composition::CompositionCompositeMode value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_CompositeMode, reinterpret_cast<std::int32_t*>(&value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::CompositeMode(winrt::Windows::UI::Composition::CompositionCompositeMode const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_CompositeMode, static_cast<std::int32_t>(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::IsVisible() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_IsVisible, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::IsVisible(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_IsVisible, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Offset() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Offset, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Offset(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Offset, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Opacity() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Opacity, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Opacity(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Opacity, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Orientation() const
    {
        winrt::Windows::Foundation::Numerics::quaternion value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Orientation, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Orientation(winrt::Windows::Foundation::Numerics::quaternion const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Orientation, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Parent() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Parent, &value);
        return winrt::Windows::UI::Composition::ContainerVisual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAngle() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_RotationAngle, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAngle(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_RotationAngle, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAngleInDegrees() const
    {
        float value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_RotationAngleInDegrees, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAngleInDegrees(float value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_RotationAngleInDegrees, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAxis() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_RotationAxis, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::RotationAxis(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_RotationAxis, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Scale() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Scale, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Scale(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Scale, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Size() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_Size, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::Size(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_Size, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::TransformMatrix() const
    {
        winrt::Windows::Foundation::Numerics::float4x4 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::get_TransformMatrix, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual<D>::TransformMatrix(winrt::Windows::Foundation::Numerics::float4x4 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual>::put_TransformMatrix, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::ParentForTransform() const
    {
        void* value{};
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::get_ParentForTransform, &value);
        return winrt::Windows::UI::Composition::Visual{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::ParentForTransform(winrt::Windows::UI::Composition::Visual const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::put_ParentForTransform, *(void**)(&value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::RelativeOffsetAdjustment() const
    {
        winrt::Windows::Foundation::Numerics::float3 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::get_RelativeOffsetAdjustment, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::RelativeOffsetAdjustment(winrt::Windows::Foundation::Numerics::float3 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::put_RelativeOffsetAdjustment, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::RelativeSizeAdjustment() const
    {
        winrt::Windows::Foundation::Numerics::float2 value{};
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::get_RelativeSizeAdjustment, put_abi(value));
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual2<D>::RelativeSizeAdjustment(winrt::Windows::Foundation::Numerics::float2 const& value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual2>::put_RelativeSizeAdjustment, impl::bind_in(value));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual3<D>::IsHitTestVisible() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::IVisual3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual3>::get_IsHitTestVisible, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual3<D>::IsHitTestVisible(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual3, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual3>::put_IsHitTestVisible, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual4<D>::IsPixelSnappingEnabled() const
    {
        bool value{};
        consume_general<winrt::Windows::UI::Composition::IVisual4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual4>::get_IsPixelSnappingEnabled, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisual4<D>::IsPixelSnappingEnabled(bool value) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisual4, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisual4>::put_IsPixelSnappingEnabled, value);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::Count() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::get_Count, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::InsertAbove(winrt::Windows::UI::Composition::Visual const& newChild, winrt::Windows::UI::Composition::Visual const& sibling) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::InsertAbove, *(void**)(&newChild), *(void**)(&sibling));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::InsertAtBottom(winrt::Windows::UI::Composition::Visual const& newChild) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::InsertAtBottom, *(void**)(&newChild));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::InsertAtTop(winrt::Windows::UI::Composition::Visual const& newChild) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::InsertAtTop, *(void**)(&newChild));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::InsertBelow(winrt::Windows::UI::Composition::Visual const& newChild, winrt::Windows::UI::Composition::Visual const& sibling) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::InsertBelow, *(void**)(&newChild), *(void**)(&sibling));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::Remove(winrt::Windows::UI::Composition::Visual const& child) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::Remove, *(void**)(&child));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualCollection<D>::RemoveAll() const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualCollection>::RemoveAll);
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualElement2<D>::GetVisualInternal() const
    {
        void* result{};
        consume_general<winrt::Windows::UI::Composition::IVisualElement2, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualElement2>::GetVisualInternal, &result);
        return winrt::Windows::UI::Composition::Visual{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualUnorderedCollection<D>::Count() const
    {
        std::int32_t value{};
        consume_general<winrt::Windows::UI::Composition::IVisualUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualUnorderedCollection>::get_Count, &value);
        return value;
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualUnorderedCollection<D>::Add(winrt::Windows::UI::Composition::Visual const& newVisual) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualUnorderedCollection>::Add, *(void**)(&newVisual));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualUnorderedCollection<D>::Remove(winrt::Windows::UI::Composition::Visual const& visual) const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualUnorderedCollection>::Remove, *(void**)(&visual));
    }
    template <typename D> auto consume_Windows_UI_Composition_IVisualUnorderedCollection<D>::RemoveAll() const
    {
        consume_general<winrt::Windows::UI::Composition::IVisualUnorderedCollection, D>(static_cast<D const*>(this), &abi_t<winrt::Windows::UI::Composition::IVisualUnorderedCollection>::RemoveAll);
    }
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAmbientLight> : produce_base<D, winrt::Windows::UI::Composition::IAmbientLight>
    {
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAmbientLight2> : produce_base<D, winrt::Windows::UI::Composition::IAmbientLight2>
    {
        std::int32_t __stdcall get_Intensity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Intensity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Intensity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Intensity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAnimationController> : produce_base<D, winrt::Windows::UI::Composition::IAnimationController>
    {
        std::int32_t __stdcall get_PlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().PlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_PlaybackRate(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().PlaybackRate(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Progress(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Progress());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Progress(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Progress(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ProgressBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationControllerProgressBehavior>(this->shim().ProgressBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ProgressBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ProgressBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationControllerProgressBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Pause() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Pause();
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Resume() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Resume();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAnimationControllerStatics> : produce_base<D, winrt::Windows::UI::Composition::IAnimationControllerStatics>
    {
        std::int32_t __stdcall get_MaxPlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MaxPlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MinPlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MinPlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAnimationObject> : produce_base<D, winrt::Windows::UI::Composition::IAnimationObject>
    {
        std::int32_t __stdcall PopulatePropertyInfo(void* propertyName, void* propertyInfo) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().PopulatePropertyInfo(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Composition::AnimationPropertyInfo const*>(&propertyInfo));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAnimationPropertyInfo> : produce_base<D, winrt::Windows::UI::Composition::IAnimationPropertyInfo>
    {
        std::int32_t __stdcall get_AccessMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationPropertyAccessMode>(this->shim().AccessMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AccessMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AccessMode(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationPropertyAccessMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IAnimationPropertyInfo2> : produce_base<D, winrt::Windows::UI::Composition::IAnimationPropertyInfo2>
    {
        std::int32_t __stdcall GetResolvedCompositionObject(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionObject>(this->shim().GetResolvedCompositionObject());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall GetResolvedCompositionObjectProperty(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<hstring>(this->shim().GetResolvedCompositionObjectProperty());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBackEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IBackEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Amplitude(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Amplitude());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBooleanKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IBooleanKeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBounceEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IBounceEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Bounces(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Bounces());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Bounciness(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Bounciness());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation>
    {
        std::int32_t __stdcall get_Acceleration(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Acceleration());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Acceleration(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Acceleration(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Restitution(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Restitution());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Restitution(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Restitution(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_Acceleration(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Acceleration());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Acceleration(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Acceleration(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Restitution(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Restitution());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Restitution(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Restitution(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_Acceleration(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Acceleration());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Acceleration(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Acceleration(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Restitution(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Restitution());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Restitution(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Restitution(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICircleEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::ICircleEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IColorKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IColorKeyFrameAnimation>
    {
        std::int32_t __stdcall get_InterpolationColorSpace(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionColorSpace>(this->shim().InterpolationColorSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InterpolationColorSpace(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InterpolationColorSpace(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionColorSpace const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, struct struct_Windows_UI_Color value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::UI::Color const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimation> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimation>
    {
        std::int32_t __stdcall ClearAllParameters() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ClearAllParameters();
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall ClearParameter(void* key) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ClearParameter(*reinterpret_cast<hstring const*>(&key));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetColorParameter(void* key, struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetColorParameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetMatrix3x2Parameter(void* key, winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetMatrix3x2Parameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetMatrix4x4Parameter(void* key, winrt::Windows::Foundation::Numerics::float4x4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetMatrix4x4Parameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4x4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetQuaternionParameter(void* key, winrt::Windows::Foundation::Numerics::quaternion value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetQuaternionParameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetReferenceParameter(void* key, void* compositionObject) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetReferenceParameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionObject const*>(&compositionObject));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetScalarParameter(void* key, float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetScalarParameter(*reinterpret_cast<hstring const*>(&key), value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetVector2Parameter(void* key, winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetVector2Parameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetVector3Parameter(void* key, winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetVector3Parameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetVector4Parameter(void* key, winrt::Windows::Foundation::Numerics::float4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetVector4Parameter(*reinterpret_cast<hstring const*>(&key), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimation2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimation2>
    {
        std::int32_t __stdcall SetBooleanParameter(void* key, bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetBooleanParameter(*reinterpret_cast<hstring const*>(&key), value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Target(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Target());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Target(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Target(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimation3> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimation3>
    {
        std::int32_t __stdcall get_InitialValueExpressions(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::InitialValueExpressionCollection>(this->shim().InitialValueExpressions());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimation4> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimation4>
    {
        std::int32_t __stdcall SetExpressionReferenceParameter(void* parameterName, void* source) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetExpressionReferenceParameter(*reinterpret_cast<hstring const*>(&parameterName), *reinterpret_cast<winrt::Windows::UI::Composition::IAnimationObject const*>(&source));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimationBase> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimationBase>
    {
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionAnimationGroup> : produce_base<D, winrt::Windows::UI::Composition::ICompositionAnimationGroup>
    {
        std::int32_t __stdcall get_Count(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Count());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Add(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Add(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionAnimation const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Remove(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Remove(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionAnimation const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveAll() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveAll();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionBackdropBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionBackdropBrush>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionBatchCompletedEventArgs> : produce_base<D, winrt::Windows::UI::Composition::ICompositionBatchCompletedEventArgs>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionBrush>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionBrushFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionBrushFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionCapabilities> : produce_base<D, winrt::Windows::UI::Composition::ICompositionCapabilities>
    {
        std::int32_t __stdcall AreEffectsSupported(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().AreEffectsSupported());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall AreEffectsFast(bool* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<bool>(this->shim().AreEffectsFast());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall add_Changed(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().Changed(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionCapabilities, winrt::Windows::Foundation::IInspectable> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall remove_Changed(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Changed(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionCapabilitiesStatics> : produce_base<D, winrt::Windows::UI::Composition::ICompositionCapabilitiesStatics>
    {
        std::int32_t __stdcall GetForCurrentView(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionCapabilities>(this->shim().GetForCurrentView());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionClip> : produce_base<D, winrt::Windows::UI::Composition::ICompositionClip>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionClip2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionClip2>
    {
        std::int32_t __stdcall get_AnchorPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().AnchorPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AnchorPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AnchorPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CenterPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().CenterPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CenterPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CenterPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Scale(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Scale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Scale(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scale(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3x2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3x2>(this->shim().TransformMatrix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransformMatrix(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionClipFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionClipFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionColorBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionColorBrush>
    {
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionColorGradientStop> : produce_base<D, winrt::Windows::UI::Composition::ICompositionColorGradientStop>
    {
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionColorGradientStopCollection> : produce_base<D, winrt::Windows::UI::Composition::ICompositionColorGradientStopCollection>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionCommitBatch> : produce_base<D, winrt::Windows::UI::Composition::ICompositionCommitBatch>
    {
        std::int32_t __stdcall get_IsActive(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsActive());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsEnded(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsEnded());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall add_Completed(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().Completed(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall remove_Completed(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Completed(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionContainerShape> : produce_base<D, winrt::Windows::UI::Composition::ICompositionContainerShape>
    {
        std::int32_t __stdcall get_Shapes(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionShapeCollection>(this->shim().Shapes());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionDrawingSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositionDrawingSurface>
    {
        std::int32_t __stdcall get_AlphaMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXAlphaMode>(this->shim().AlphaMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_PixelFormat(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXPixelFormat>(this->shim().PixelFormat());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Size(winrt::Windows::Foundation::Size* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Size>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Size>(this->shim().Size());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionDrawingSurface2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionDrawingSurface2>
    {
        std::int32_t __stdcall get_SizeInt32(struct struct_Windows_Graphics_SizeInt32* value) noexcept final try
        {
            zero_abi<winrt::Windows::Graphics::SizeInt32>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::SizeInt32>(this->shim().SizeInt32());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Resize(struct struct_Windows_Graphics_SizeInt32 sizePixels) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Resize(*reinterpret_cast<winrt::Windows::Graphics::SizeInt32 const*>(&sizePixels));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Scroll(struct struct_Windows_Graphics_PointInt32 offset) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scroll(*reinterpret_cast<winrt::Windows::Graphics::PointInt32 const*>(&offset));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall ScrollRect(struct struct_Windows_Graphics_PointInt32 offset, struct struct_Windows_Graphics_RectInt32 scrollRect) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scroll(*reinterpret_cast<winrt::Windows::Graphics::PointInt32 const*>(&offset), *reinterpret_cast<winrt::Windows::Graphics::RectInt32 const*>(&scrollRect));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall ScrollWithClip(struct struct_Windows_Graphics_PointInt32 offset, struct struct_Windows_Graphics_RectInt32 clipRect) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ScrollWithClip(*reinterpret_cast<winrt::Windows::Graphics::PointInt32 const*>(&offset), *reinterpret_cast<winrt::Windows::Graphics::RectInt32 const*>(&clipRect));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall ScrollRectWithClip(struct struct_Windows_Graphics_PointInt32 offset, struct struct_Windows_Graphics_RectInt32 clipRect, struct struct_Windows_Graphics_RectInt32 scrollRect) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ScrollWithClip(*reinterpret_cast<winrt::Windows::Graphics::PointInt32 const*>(&offset), *reinterpret_cast<winrt::Windows::Graphics::RectInt32 const*>(&clipRect), *reinterpret_cast<winrt::Windows::Graphics::RectInt32 const*>(&scrollRect));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionDrawingSurfaceFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionDrawingSurfaceFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEasingFunction>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEasingFunctionFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEasingFunctionFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics>
    {
        std::int32_t __stdcall CreateCubicBezierEasingFunction(void* owner, winrt::Windows::Foundation::Numerics::float2 controlPoint1, winrt::Windows::Foundation::Numerics::float2 controlPoint2, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CubicBezierEasingFunction>(this->shim().CreateCubicBezierEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&controlPoint1), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&controlPoint2)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateLinearEasingFunction(void* owner, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::LinearEasingFunction>(this->shim().CreateLinearEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateStepEasingFunction(void* owner, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::StepEasingFunction>(this->shim().CreateStepEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateStepEasingFunctionWithStepCount(void* owner, std::int32_t stepCount, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::StepEasingFunction>(this->shim().CreateStepEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), stepCount));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBackEasingFunction(void* owner, std::int32_t mode, float amplitude, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BackEasingFunction>(this->shim().CreateBackEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode), amplitude));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBounceEasingFunction(void* owner, std::int32_t mode, std::int32_t bounces, float bounciness, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BounceEasingFunction>(this->shim().CreateBounceEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode), bounces, bounciness));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateCircleEasingFunction(void* owner, std::int32_t mode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CircleEasingFunction>(this->shim().CreateCircleEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateElasticEasingFunction(void* owner, std::int32_t mode, std::int32_t oscillations, float springiness, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ElasticEasingFunction>(this->shim().CreateElasticEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode), oscillations, springiness));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateExponentialEasingFunction(void* owner, std::int32_t mode, float exponent, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ExponentialEasingFunction>(this->shim().CreateExponentialEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode), exponent));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePowerEasingFunction(void* owner, std::int32_t mode, float power, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::PowerEasingFunction>(this->shim().CreatePowerEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode), power));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSineEasingFunction(void* owner, std::int32_t mode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SineEasingFunction>(this->shim().CreateSineEasingFunction(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&owner), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunctionMode const*>(&mode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEffectBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEffectBrush>
    {
        std::int32_t __stdcall GetSourceParameter(void* name, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().GetSourceParameter(*reinterpret_cast<hstring const*>(&name)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetSourceParameter(void* name, void* source) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetSourceParameter(*reinterpret_cast<hstring const*>(&name), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&source));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEffectFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEffectFactory>
    {
        std::int32_t __stdcall CreateBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionEffectBrush>(this->shim().CreateBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ExtendedError(winrt::hresult* value) noexcept final try
        {
            zero_abi<winrt::hresult>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::hresult>(this->shim().ExtendedError());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LoadStatus(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEffectFactoryLoadStatus>(this->shim().LoadStatus());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEffectSourceParameter> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEffectSourceParameter>
    {
        std::int32_t __stdcall get_Name(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Name());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEffectSourceParameterFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEffectSourceParameterFactory>
    {
        std::int32_t __stdcall Create(void* name, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEffectSourceParameter>(this->shim().Create(*reinterpret_cast<hstring const*>(&name)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionEllipseGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionEllipseGeometry>
    {
        std::int32_t __stdcall get_Center(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Center());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Center(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Center(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Radius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Radius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Radius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Radius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGeometricClip> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGeometricClip>
    {
        std::int32_t __stdcall get_Geometry(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionGeometry>(this->shim().Geometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Geometry(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Geometry(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionGeometry const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ViewBox(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionViewBox>(this->shim().ViewBox());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ViewBox(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ViewBox(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionViewBox const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGeometry>
    {
        std::int32_t __stdcall get_TrimEnd(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TrimEnd());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TrimEnd(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TrimEnd(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TrimOffset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TrimOffset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TrimOffset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TrimOffset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TrimStart(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TrimStart());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TrimStart(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TrimStart(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGeometryFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGeometryFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGradientBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGradientBrush>
    {
        std::int32_t __stdcall get_AnchorPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().AnchorPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AnchorPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AnchorPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CenterPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().CenterPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CenterPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CenterPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ColorStops(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionColorGradientStopCollection>(this->shim().ColorStops());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ExtendMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionGradientExtendMode>(this->shim().ExtendMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ExtendMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ExtendMode(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionGradientExtendMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InterpolationSpace(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionColorSpace>(this->shim().InterpolationSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InterpolationSpace(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InterpolationSpace(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionColorSpace const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Scale(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Scale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Scale(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scale(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3x2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3x2>(this->shim().TransformMatrix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransformMatrix(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGradientBrush2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGradientBrush2>
    {
        std::int32_t __stdcall get_MappingMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionMappingMode>(this->shim().MappingMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MappingMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MappingMode(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionMappingMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGradientBrushFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGradientBrushFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice>
    {
        std::int32_t __stdcall CreateDrawingSurface(winrt::Windows::Foundation::Size sizePixels, std::int32_t pixelFormat, std::int32_t alphaMode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionDrawingSurface>(this->shim().CreateDrawingSurface(*reinterpret_cast<winrt::Windows::Foundation::Size const*>(&sizePixels), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXPixelFormat const*>(&pixelFormat), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&alphaMode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall add_RenderingDeviceReplaced(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().RenderingDeviceReplaced(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::UI::Composition::CompositionGraphicsDevice, winrt::Windows::UI::Composition::RenderingDeviceReplacedEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall remove_RenderingDeviceReplaced(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RenderingDeviceReplaced(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice2>
    {
        std::int32_t __stdcall CreateDrawingSurface2(struct struct_Windows_Graphics_SizeInt32 sizePixels, std::int32_t pixelFormat, std::int32_t alphaMode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionDrawingSurface>(this->shim().CreateDrawingSurface2(*reinterpret_cast<winrt::Windows::Graphics::SizeInt32 const*>(&sizePixels), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXPixelFormat const*>(&pixelFormat), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&alphaMode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateVirtualDrawingSurface(struct struct_Windows_Graphics_SizeInt32 sizePixels, std::int32_t pixelFormat, std::int32_t alphaMode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionVirtualDrawingSurface>(this->shim().CreateVirtualDrawingSurface(*reinterpret_cast<winrt::Windows::Graphics::SizeInt32 const*>(&sizePixels), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXPixelFormat const*>(&pixelFormat), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&alphaMode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice3> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice3>
    {
        std::int32_t __stdcall CreateMipmapSurface(struct struct_Windows_Graphics_SizeInt32 sizePixels, std::int32_t pixelFormat, std::int32_t alphaMode, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionMipmapSurface>(this->shim().CreateMipmapSurface(*reinterpret_cast<winrt::Windows::Graphics::SizeInt32 const*>(&sizePixels), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXPixelFormat const*>(&pixelFormat), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&alphaMode)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Trim() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Trim();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice4> : produce_base<D, winrt::Windows::UI::Composition::ICompositionGraphicsDevice4>
    {
        std::int32_t __stdcall CaptureAsync(void* captureVisual, struct struct_Windows_Graphics_SizeInt32 size, std::int32_t pixelFormat, std::int32_t alphaMode, float sdrBoost, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::UI::Composition::ICompositionSurface>>(this->shim().CaptureAsync(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&captureVisual), *reinterpret_cast<winrt::Windows::Graphics::SizeInt32 const*>(&size), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXPixelFormat const*>(&pixelFormat), *reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&alphaMode), sdrBoost));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLight> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLight>
    {
        std::int32_t __stdcall get_Targets(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::VisualUnorderedCollection>(this->shim().Targets());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLight2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLight2>
    {
        std::int32_t __stdcall get_ExclusionsFromTargets(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::VisualUnorderedCollection>(this->shim().ExclusionsFromTargets());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLight3> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLight3>
    {
        std::int32_t __stdcall get_IsEnabled(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsEnabled());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsEnabled(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsEnabled(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLightFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLightFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLineGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLineGeometry>
    {
        std::int32_t __stdcall get_Start(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Start());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Start(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Start(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_End(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().End());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_End(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().End(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionLinearGradientBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionLinearGradientBrush>
    {
        std::int32_t __stdcall get_EndPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().EndPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_EndPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().EndPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StartPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().StartPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StartPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionMaskBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionMaskBrush>
    {
        std::int32_t __stdcall get_Mask(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Mask());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Mask(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Mask(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Source(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Source());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Source(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Source(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionMipmapSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositionMipmapSurface>
    {
        std::int32_t __stdcall get_LevelCount(std::uint32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::uint32_t>(this->shim().LevelCount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_AlphaMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXAlphaMode>(this->shim().AlphaMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_PixelFormat(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXPixelFormat>(this->shim().PixelFormat());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_SizeInt32(struct struct_Windows_Graphics_SizeInt32* value) noexcept final try
        {
            zero_abi<winrt::Windows::Graphics::SizeInt32>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::SizeInt32>(this->shim().SizeInt32());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall GetDrawingSurfaceForLevel(std::uint32_t level, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionDrawingSurface>(this->shim().GetDrawingSurfaceForLevel(level));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionNineGridBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionNineGridBrush>
    {
        std::int32_t __stdcall get_BottomInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().BottomInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BottomInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BottomInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_BottomInsetScale(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().BottomInsetScale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BottomInsetScale(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BottomInsetScale(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsCenterHollow(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsCenterHollow());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsCenterHollow(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsCenterHollow(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LeftInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().LeftInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LeftInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LeftInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LeftInsetScale(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().LeftInsetScale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LeftInsetScale(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LeftInsetScale(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RightInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RightInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RightInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RightInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RightInsetScale(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RightInsetScale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RightInsetScale(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RightInsetScale(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Source(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Source());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Source(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Source(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TopInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TopInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TopInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TopInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TopInsetScale(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TopInsetScale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TopInsetScale(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TopInsetScale(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetInsets(float inset) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetInsets(inset);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetInsetsWithValues(float left, float top, float right, float bottom) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetInsets(left, top, right, bottom);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetInsetScales(float scale) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetInsetScales(scale);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall SetInsetScalesWithValues(float left, float top, float right, float bottom) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SetInsetScales(left, top, right, bottom);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObject> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObject>
    {
        std::int32_t __stdcall get_Compositor(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Compositor>(this->shim().Compositor());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Dispatcher(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Core::CoreDispatcher>(this->shim().Dispatcher());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Properties(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionPropertySet>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StartAnimation(void* propertyName, void* animation) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartAnimation(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionAnimation const*>(&animation));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StopAnimation(void* propertyName) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StopAnimation(*reinterpret_cast<hstring const*>(&propertyName));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObject2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObject2>
    {
        std::int32_t __stdcall get_Comment(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Comment());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Comment(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Comment(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ImplicitAnimations(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::ImplicitAnimationCollection>(this->shim().ImplicitAnimations());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ImplicitAnimations(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ImplicitAnimations(*reinterpret_cast<winrt::Windows::UI::Composition::ImplicitAnimationCollection const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StartAnimationGroup(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartAnimationGroup(*reinterpret_cast<winrt::Windows::UI::Composition::ICompositionAnimationBase const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StopAnimationGroup(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StopAnimationGroup(*reinterpret_cast<winrt::Windows::UI::Composition::ICompositionAnimationBase const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObject3> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObject3>
    {
        std::int32_t __stdcall get_DispatcherQueue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::System::DispatcherQueue>(this->shim().DispatcherQueue());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObject4> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObject4>
    {
        std::int32_t __stdcall TryGetAnimationController(void* propertyName, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::AnimationController>(this->shim().TryGetAnimationController(*reinterpret_cast<hstring const*>(&propertyName)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObject5> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObject5>
    {
        std::int32_t __stdcall StartAnimationWithController(void* propertyName, void* animation, void* animationController) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartAnimation(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionAnimation const*>(&animation), *reinterpret_cast<winrt::Windows::UI::Composition::AnimationController const*>(&animationController));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObjectFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObjectFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionObjectStatics> : produce_base<D, winrt::Windows::UI::Composition::ICompositionObjectStatics>
    {
        std::int32_t __stdcall StartAnimationWithIAnimationObject(void* target, void* propertyName, void* animation) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartAnimationWithIAnimationObject(*reinterpret_cast<winrt::Windows::UI::Composition::IAnimationObject const*>(&target), *reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionAnimation const*>(&animation));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StartAnimationGroupWithIAnimationObject(void* target, void* animation) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartAnimationGroupWithIAnimationObject(*reinterpret_cast<winrt::Windows::UI::Composition::IAnimationObject const*>(&target), *reinterpret_cast<winrt::Windows::UI::Composition::ICompositionAnimationBase const*>(&animation));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionPath> : produce_base<D, winrt::Windows::UI::Composition::ICompositionPath>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionPathFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionPathFactory>
    {
        std::int32_t __stdcall Create(void* source, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionPath>(this->shim().Create(*reinterpret_cast<winrt::Windows::Graphics::IGeometrySource2D const*>(&source)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionPathGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionPathGeometry>
    {
        std::int32_t __stdcall get_Path(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionPath>(this->shim().Path());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Path(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Path(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionPath const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadow> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadow>
    {
        std::int32_t __stdcall get_BlurRadiusMultiplier(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().BlurRadiusMultiplier());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BlurRadiusMultiplier(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BlurRadiusMultiplier(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Casters(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionProjectedShadowCasterCollection>(this->shim().Casters());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LightSource(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionLight>(this->shim().LightSource());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LightSource(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LightSource(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionLight const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MaxBlurRadius(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MaxBlurRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MaxBlurRadius(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MaxBlurRadius(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MinBlurRadius(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MinBlurRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MinBlurRadius(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MinBlurRadius(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Receivers(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiverUnorderedCollection>(this->shim().Receivers());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster>
    {
        std::int32_t __stdcall get_Brush(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Brush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Brush(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Brush(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CastingVisual(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().CastingVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CastingVisual(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CastingVisual(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection>
    {
        std::int32_t __stdcall get_Count(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Count());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAbove(void* newCaster, void* reference) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAbove(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&newCaster), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&reference));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAtBottom(void* newCaster) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAtBottom(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&newCaster));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAtTop(void* newCaster) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAtTop(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&newCaster));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertBelow(void* newCaster, void* reference) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertBelow(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&newCaster), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&reference));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Remove(void* caster) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Remove(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster const*>(&caster));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveAll() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveAll();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollectionStatics> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollectionStatics>
    {
        std::int32_t __stdcall get_MaxRespectedCasters(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().MaxRespectedCasters());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver>
    {
        std::int32_t __stdcall get_ReceivingVisual(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().ReceivingVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ReceivingVisual(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ReceivingVisual(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection> : produce_base<D, winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection>
    {
        std::int32_t __stdcall Add(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Add(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Count(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Count());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Remove(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Remove(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveAll() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveAll();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionPropertySet> : produce_base<D, winrt::Windows::UI::Composition::ICompositionPropertySet>
    {
        std::int32_t __stdcall InsertColor(void* propertyName, struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertColor(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertMatrix3x2(void* propertyName, winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertMatrix3x2(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertMatrix4x4(void* propertyName, winrt::Windows::Foundation::Numerics::float4x4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertMatrix4x4(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4x4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertQuaternion(void* propertyName, winrt::Windows::Foundation::Numerics::quaternion value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertQuaternion(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertScalar(void* propertyName, float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertScalar(*reinterpret_cast<hstring const*>(&propertyName), value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertVector2(void* propertyName, winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertVector2(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertVector3(void* propertyName, winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertVector3(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertVector4(void* propertyName, winrt::Windows::Foundation::Numerics::float4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertVector4(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetColor(void* propertyName, struct struct_Windows_UI_Color* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetColor(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::UI::Color*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetMatrix3x2(void* propertyName, winrt::Windows::Foundation::Numerics::float3x2* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3x2>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetMatrix3x2(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetMatrix4x4(void* propertyName, winrt::Windows::Foundation::Numerics::float4x4* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float4x4>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetMatrix4x4(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4x4*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetQuaternion(void* propertyName, winrt::Windows::Foundation::Numerics::quaternion* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::quaternion>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetQuaternion(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetScalar(void* propertyName, float* value, std::int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetScalar(*reinterpret_cast<hstring const*>(&propertyName), *value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetVector2(void* propertyName, winrt::Windows::Foundation::Numerics::float2* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetVector2(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetVector3(void* propertyName, winrt::Windows::Foundation::Numerics::float3* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetVector3(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetVector4(void* propertyName, winrt::Windows::Foundation::Numerics::float4* value, std::int32_t* result) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float4>(value);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetVector4(*reinterpret_cast<hstring const*>(&propertyName), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4*>(value)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionPropertySet2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionPropertySet2>
    {
        std::int32_t __stdcall InsertBoolean(void* propertyName, bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertBoolean(*reinterpret_cast<hstring const*>(&propertyName), value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall TryGetBoolean(void* propertyName, bool* value, std::int32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGetValueStatus>(this->shim().TryGetBoolean(*reinterpret_cast<hstring const*>(&propertyName), *value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionRadialGradientBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionRadialGradientBrush>
    {
        std::int32_t __stdcall get_EllipseCenter(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().EllipseCenter());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_EllipseCenter(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().EllipseCenter(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_EllipseRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().EllipseRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_EllipseRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().EllipseRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_GradientOriginOffset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().GradientOriginOffset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_GradientOriginOffset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().GradientOriginOffset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionRectangleGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionRectangleGeometry>
    {
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Size(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Size());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Size(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Size(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry> : produce_base<D, winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry>
    {
        std::int32_t __stdcall get_CornerRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().CornerRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CornerRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CornerRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Size(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Size());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Size(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Size(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionScopedBatch> : produce_base<D, winrt::Windows::UI::Composition::ICompositionScopedBatch>
    {
        std::int32_t __stdcall get_IsActive(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsActive());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsEnded(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsEnded());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall End() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().End();
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Resume() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Resume();
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Suspend() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Suspend();
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall add_Completed(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().Completed(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall remove_Completed(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Completed(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionShadow> : produce_base<D, winrt::Windows::UI::Composition::ICompositionShadow>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionShadowFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionShadowFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionShape> : produce_base<D, winrt::Windows::UI::Composition::ICompositionShape>
    {
        std::int32_t __stdcall get_CenterPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().CenterPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CenterPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CenterPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Scale(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Scale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Scale(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scale(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3x2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3x2>(this->shim().TransformMatrix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransformMatrix(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionShapeFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionShapeFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSpriteShape> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSpriteShape>
    {
        std::int32_t __stdcall get_FillBrush(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().FillBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_FillBrush(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FillBrush(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Geometry(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionGeometry>(this->shim().Geometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Geometry(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Geometry(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionGeometry const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsStrokeNonScaling(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsStrokeNonScaling());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsStrokeNonScaling(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsStrokeNonScaling(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeBrush(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().StrokeBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeBrush(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeBrush(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeDashArray(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStrokeDashArray>(this->shim().StrokeDashArray());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeDashCap(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStrokeCap>(this->shim().StrokeDashCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeDashCap(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeDashCap(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStrokeCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeDashOffset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().StrokeDashOffset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeDashOffset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeDashOffset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeEndCap(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStrokeCap>(this->shim().StrokeEndCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeEndCap(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeEndCap(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStrokeCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeLineJoin(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStrokeLineJoin>(this->shim().StrokeLineJoin());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeLineJoin(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeLineJoin(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStrokeLineJoin const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeMiterLimit(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().StrokeMiterLimit());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeMiterLimit(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeMiterLimit(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeStartCap(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStrokeCap>(this->shim().StrokeStartCap());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeStartCap(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeStartCap(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStrokeCap const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StrokeThickness(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().StrokeThickness());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StrokeThickness(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StrokeThickness(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop>
    {
        std::int32_t __stdcall get_SystemBackdrop(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().SystemBackdrop());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SystemBackdrop(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SystemBackdrop(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSurface>
    {
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush>
    {
        std::int32_t __stdcall get_BitmapInterpolationMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode>(this->shim().BitmapInterpolationMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BitmapInterpolationMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BitmapInterpolationMode(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_HorizontalAlignmentRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().HorizontalAlignmentRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_HorizontalAlignmentRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().HorizontalAlignmentRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Stretch(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStretch>(this->shim().Stretch());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Stretch(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Stretch(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStretch const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Surface(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::ICompositionSurface>(this->shim().Surface());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Surface(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Surface(*reinterpret_cast<winrt::Windows::UI::Composition::ICompositionSurface const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_VerticalAlignmentRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().VerticalAlignmentRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_VerticalAlignmentRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().VerticalAlignmentRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush2> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush2>
    {
        std::int32_t __stdcall get_AnchorPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().AnchorPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AnchorPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AnchorPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CenterPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().CenterPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CenterPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CenterPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Scale(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Scale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Scale(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scale(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3x2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3x2>(this->shim().TransformMatrix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TransformMatrix(winrt::Windows::Foundation::Numerics::float3x2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransformMatrix(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3x2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush3> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSurfaceBrush3>
    {
        std::int32_t __stdcall get_SnapToPixels(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().SnapToPixels());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SnapToPixels(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SnapToPixels(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionSurfaceFacade> : produce_base<D, winrt::Windows::UI::Composition::ICompositionSurfaceFacade>
    {
        std::int32_t __stdcall GetRealSurface(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ICompositionSurface>(this->shim().GetRealSurface());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTarget> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTarget>
    {
        std::int32_t __stdcall get_Root(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().Root());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Root(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Root(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTargetFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTargetFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTexture> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTexture>
    {
        std::int32_t __stdcall get_SourceRect(struct struct_Windows_Graphics_RectInt32* value) noexcept final try
        {
            zero_abi<winrt::Windows::Graphics::RectInt32>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::RectInt32>(this->shim().SourceRect());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SourceRect(struct struct_Windows_Graphics_RectInt32 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SourceRect(*reinterpret_cast<winrt::Windows::Graphics::RectInt32 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_AlphaMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXAlphaMode>(this->shim().AlphaMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AlphaMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AlphaMode(*reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXAlphaMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ColorSpace(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Graphics::DirectX::DirectXColorSpace>(this->shim().ColorSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ColorSpace(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ColorSpace(*reinterpret_cast<winrt::Windows::Graphics::DirectX::DirectXColorSpace const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTextureFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTextureFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTransform> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTransform>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionTransformFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionTransformFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionViewBox> : produce_base<D, winrt::Windows::UI::Composition::ICompositionViewBox>
    {
        std::int32_t __stdcall get_HorizontalAlignmentRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().HorizontalAlignmentRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_HorizontalAlignmentRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().HorizontalAlignmentRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Size(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Size());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Size(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Size(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Stretch(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionStretch>(this->shim().Stretch());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Stretch(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Stretch(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionStretch const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_VerticalAlignmentRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().VerticalAlignmentRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_VerticalAlignmentRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().VerticalAlignmentRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurface>
    {
        std::int32_t __stdcall Trim(std::uint32_t __rectsSize, struct struct_Windows_Graphics_RectInt32* rects) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Trim(array_view<winrt::Windows::Graphics::RectInt32 const>(reinterpret_cast<winrt::Windows::Graphics::RectInt32 const *>(rects), reinterpret_cast<winrt::Windows::Graphics::RectInt32 const *>(rects) + __rectsSize));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurfaceFactory> : produce_base<D, winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurfaceFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositionVisualSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositionVisualSurface>
    {
        std::int32_t __stdcall get_SourceVisual(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().SourceVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SourceVisual(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SourceVisual(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_SourceOffset(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().SourceOffset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SourceOffset(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SourceOffset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_SourceSize(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().SourceSize());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SourceSize(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SourceSize(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor> : produce_base<D, winrt::Windows::UI::Composition::ICompositor>
    {
        std::int32_t __stdcall CreateColorKeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ColorKeyFrameAnimation>(this->shim().CreateColorKeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateColorBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionColorBrush>(this->shim().CreateColorBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateColorBrushWithColor(struct struct_Windows_UI_Color color, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionColorBrush>(this->shim().CreateColorBrush(*reinterpret_cast<winrt::Windows::UI::Color const*>(&color)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateContainerVisual(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ContainerVisual>(this->shim().CreateContainerVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateCubicBezierEasingFunction(winrt::Windows::Foundation::Numerics::float2 controlPoint1, winrt::Windows::Foundation::Numerics::float2 controlPoint2, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CubicBezierEasingFunction>(this->shim().CreateCubicBezierEasingFunction(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&controlPoint1), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&controlPoint2)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateEffectFactory(void* graphicsEffect, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionEffectFactory>(this->shim().CreateEffectFactory(*reinterpret_cast<winrt::Windows::Graphics::Effects::IGraphicsEffect const*>(&graphicsEffect)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateEffectFactoryWithProperties(void* graphicsEffect, void* animatableProperties, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionEffectFactory>(this->shim().CreateEffectFactory(*reinterpret_cast<winrt::Windows::Graphics::Effects::IGraphicsEffect const*>(&graphicsEffect), *reinterpret_cast<winrt::Windows::Foundation::Collections::IIterable<hstring> const*>(&animatableProperties)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateExpressionAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ExpressionAnimation>(this->shim().CreateExpressionAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateExpressionAnimationWithExpression(void* expression, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ExpressionAnimation>(this->shim().CreateExpressionAnimation(*reinterpret_cast<hstring const*>(&expression)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateInsetClip(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::InsetClip>(this->shim().CreateInsetClip());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateInsetClipWithInsets(float leftInset, float topInset, float rightInset, float bottomInset, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::InsetClip>(this->shim().CreateInsetClip(leftInset, topInset, rightInset, bottomInset));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateLinearEasingFunction(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::LinearEasingFunction>(this->shim().CreateLinearEasingFunction());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePropertySet(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionPropertySet>(this->shim().CreatePropertySet());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateQuaternionKeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::QuaternionKeyFrameAnimation>(this->shim().CreateQuaternionKeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateScalarKeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ScalarKeyFrameAnimation>(this->shim().CreateScalarKeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateScopedBatch(std::uint32_t batchType, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionScopedBatch>(this->shim().CreateScopedBatch(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBatchTypes const*>(&batchType)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpriteVisual(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SpriteVisual>(this->shim().CreateSpriteVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSurfaceBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionSurfaceBrush>(this->shim().CreateSurfaceBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSurfaceBrushWithSurface(void* surface, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionSurfaceBrush>(this->shim().CreateSurfaceBrush(*reinterpret_cast<winrt::Windows::UI::Composition::ICompositionSurface const*>(&surface)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateTargetForCurrentView(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionTarget>(this->shim().CreateTargetForCurrentView());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateVector2KeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::Vector2KeyFrameAnimation>(this->shim().CreateVector2KeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateVector3KeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::Vector3KeyFrameAnimation>(this->shim().CreateVector3KeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateVector4KeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::Vector4KeyFrameAnimation>(this->shim().CreateVector4KeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall GetCommitBatch(std::uint32_t batchType, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionCommitBatch>(this->shim().GetCommitBatch(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBatchTypes const*>(&batchType)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor2> : produce_base<D, winrt::Windows::UI::Composition::ICompositor2>
    {
        std::int32_t __stdcall CreateAmbientLight(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::AmbientLight>(this->shim().CreateAmbientLight());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateAnimationGroup(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionAnimationGroup>(this->shim().CreateAnimationGroup());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBackdropBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionBackdropBrush>(this->shim().CreateBackdropBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateDistantLight(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::DistantLight>(this->shim().CreateDistantLight());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateDropShadow(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::DropShadow>(this->shim().CreateDropShadow());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateImplicitAnimationCollection(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ImplicitAnimationCollection>(this->shim().CreateImplicitAnimationCollection());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateLayerVisual(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::LayerVisual>(this->shim().CreateLayerVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateMaskBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionMaskBrush>(this->shim().CreateMaskBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateNineGridBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionNineGridBrush>(this->shim().CreateNineGridBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePointLight(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::PointLight>(this->shim().CreatePointLight());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpotLight(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SpotLight>(this->shim().CreateSpotLight());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateStepEasingFunction(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::StepEasingFunction>(this->shim().CreateStepEasingFunction());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateStepEasingFunctionWithStepCount(std::int32_t stepCount, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::StepEasingFunction>(this->shim().CreateStepEasingFunction(stepCount));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor3> : produce_base<D, winrt::Windows::UI::Composition::ICompositor3>
    {
        std::int32_t __stdcall CreateHostBackdropBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionBackdropBrush>(this->shim().CreateHostBackdropBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor4> : produce_base<D, winrt::Windows::UI::Composition::ICompositor4>
    {
        std::int32_t __stdcall CreateColorGradientStop(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionColorGradientStop>(this->shim().CreateColorGradientStop());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateColorGradientStopWithOffsetAndColor(float offset, struct struct_Windows_UI_Color color, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionColorGradientStop>(this->shim().CreateColorGradientStop(offset, *reinterpret_cast<winrt::Windows::UI::Color const*>(&color)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateLinearGradientBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionLinearGradientBrush>(this->shim().CreateLinearGradientBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpringScalarAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SpringScalarNaturalMotionAnimation>(this->shim().CreateSpringScalarAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpringVector2Animation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SpringVector2NaturalMotionAnimation>(this->shim().CreateSpringVector2Animation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpringVector3Animation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::SpringVector3NaturalMotionAnimation>(this->shim().CreateSpringVector3Animation());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor5> : produce_base<D, winrt::Windows::UI::Composition::ICompositor5>
    {
        std::int32_t __stdcall get_Comment(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Comment());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Comment(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Comment(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_GlobalPlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().GlobalPlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_GlobalPlaybackRate(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().GlobalPlaybackRate(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBounceScalarAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BounceScalarNaturalMotionAnimation>(this->shim().CreateBounceScalarAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBounceVector2Animation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BounceVector2NaturalMotionAnimation>(this->shim().CreateBounceVector2Animation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBounceVector3Animation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BounceVector3NaturalMotionAnimation>(this->shim().CreateBounceVector3Animation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateContainerShape(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionContainerShape>(this->shim().CreateContainerShape());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateEllipseGeometry(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionEllipseGeometry>(this->shim().CreateEllipseGeometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateLineGeometry(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionLineGeometry>(this->shim().CreateLineGeometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePathGeometry(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionPathGeometry>(this->shim().CreatePathGeometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePathGeometryWithPath(void* path, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionPathGeometry>(this->shim().CreatePathGeometry(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionPath const*>(&path)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreatePathKeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::PathKeyFrameAnimation>(this->shim().CreatePathKeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRectangleGeometry(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionRectangleGeometry>(this->shim().CreateRectangleGeometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRoundedRectangleGeometry(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionRoundedRectangleGeometry>(this->shim().CreateRoundedRectangleGeometry());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateShapeVisual(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::ShapeVisual>(this->shim().CreateShapeVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpriteShape(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionSpriteShape>(this->shim().CreateSpriteShape());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateSpriteShapeWithGeometry(void* geometry, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionSpriteShape>(this->shim().CreateSpriteShape(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionGeometry const*>(&geometry)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateViewBox(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionViewBox>(this->shim().CreateViewBox());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RequestCommitAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().RequestCommitAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor6> : produce_base<D, winrt::Windows::UI::Composition::ICompositor6>
    {
        std::int32_t __stdcall CreateGeometricClip(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGeometricClip>(this->shim().CreateGeometricClip());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateGeometricClipWithGeometry(void* geometry, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionGeometricClip>(this->shim().CreateGeometricClip(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionGeometry const*>(&geometry)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRedirectVisual(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::RedirectVisual>(this->shim().CreateRedirectVisual());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRedirectVisualWithSourceVisual(void* source, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::RedirectVisual>(this->shim().CreateRedirectVisual(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&source)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateBooleanKeyFrameAnimation(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::BooleanKeyFrameAnimation>(this->shim().CreateBooleanKeyFrameAnimation());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor7> : produce_base<D, winrt::Windows::UI::Composition::ICompositor7>
    {
        std::int32_t __stdcall get_DispatcherQueue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::System::DispatcherQueue>(this->shim().DispatcherQueue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateAnimationPropertyInfo(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::AnimationPropertyInfo>(this->shim().CreateAnimationPropertyInfo());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRectangleClip(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::RectangleClip>(this->shim().CreateRectangleClip());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRectangleClipWithSides(float left, float top, float right, float bottom, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::RectangleClip>(this->shim().CreateRectangleClip(left, top, right, bottom));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateRectangleClipWithSidesAndRadius(float left, float top, float right, float bottom, winrt::Windows::Foundation::Numerics::float2 topLeftRadius, winrt::Windows::Foundation::Numerics::float2 topRightRadius, winrt::Windows::Foundation::Numerics::float2 bottomRightRadius, winrt::Windows::Foundation::Numerics::float2 bottomLeftRadius, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::RectangleClip>(this->shim().CreateRectangleClip(left, top, right, bottom, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&topLeftRadius), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&topRightRadius), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&bottomRightRadius), *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&bottomLeftRadius)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositor8> : produce_base<D, winrt::Windows::UI::Composition::ICompositor8>
    {
        std::int32_t __stdcall CreateAnimationController(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::AnimationController>(this->shim().CreateAnimationController());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositorStatics> : produce_base<D, winrt::Windows::UI::Composition::ICompositorStatics>
    {
        std::int32_t __stdcall get_MaxGlobalPlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MaxGlobalPlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MinGlobalPlaybackRate(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MinGlobalPlaybackRate());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositorWithBlurredWallpaperBackdropBrush> : produce_base<D, winrt::Windows::UI::Composition::ICompositorWithBlurredWallpaperBackdropBrush>
    {
        std::int32_t __stdcall TryCreateBlurredWallpaperBackdropBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionBackdropBrush>(this->shim().TryCreateBlurredWallpaperBackdropBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositorWithProjectedShadow> : produce_base<D, winrt::Windows::UI::Composition::ICompositorWithProjectedShadow>
    {
        std::int32_t __stdcall CreateProjectedShadowCaster(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster>(this->shim().CreateProjectedShadowCaster());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateProjectedShadow(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionProjectedShadow>(this->shim().CreateProjectedShadow());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateProjectedShadowReceiver(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver>(this->shim().CreateProjectedShadowReceiver());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositorWithRadialGradient> : produce_base<D, winrt::Windows::UI::Composition::ICompositorWithRadialGradient>
    {
        std::int32_t __stdcall CreateRadialGradientBrush(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionRadialGradientBrush>(this->shim().CreateRadialGradientBrush());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICompositorWithVisualSurface> : produce_base<D, winrt::Windows::UI::Composition::ICompositorWithVisualSurface>
    {
        std::int32_t __stdcall CreateVisualSurface(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::CompositionVisualSurface>(this->shim().CreateVisualSurface());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IContainerVisual> : produce_base<D, winrt::Windows::UI::Composition::IContainerVisual>
    {
        std::int32_t __stdcall get_Children(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::VisualCollection>(this->shim().Children());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IContainerVisualFactory> : produce_base<D, winrt::Windows::UI::Composition::IContainerVisualFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ICubicBezierEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::ICubicBezierEasingFunction>
    {
        std::int32_t __stdcall get_ControlPoint1(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().ControlPoint1());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ControlPoint2(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().ControlPoint2());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDelegatedInkTrailVisual> : produce_base<D, winrt::Windows::UI::Composition::IDelegatedInkTrailVisual>
    {
        std::int32_t __stdcall AddTrailPoints(std::uint32_t __inkPointsSize, struct struct_Windows_UI_Composition_InkTrailPoint* inkPoints, std::uint32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<std::uint32_t>(this->shim().AddTrailPoints(array_view<winrt::Windows::UI::Composition::InkTrailPoint const>(reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(inkPoints), reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(inkPoints) + __inkPointsSize)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall AddTrailPointsWithPrediction(std::uint32_t __inkPointsSize, struct struct_Windows_UI_Composition_InkTrailPoint* inkPoints, std::uint32_t __predictedInkPointsSize, struct struct_Windows_UI_Composition_InkTrailPoint* predictedInkPoints, std::uint32_t* result) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *result = detach_from<std::uint32_t>(this->shim().AddTrailPointsWithPrediction(array_view<winrt::Windows::UI::Composition::InkTrailPoint const>(reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(inkPoints), reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(inkPoints) + __inkPointsSize), array_view<winrt::Windows::UI::Composition::InkTrailPoint const>(reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(predictedInkPoints), reinterpret_cast<winrt::Windows::UI::Composition::InkTrailPoint const *>(predictedInkPoints) + __predictedInkPointsSize)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveTrailPoints(std::uint32_t generationId) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveTrailPoints(generationId);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall StartNewTrail(struct struct_Windows_UI_Color color) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StartNewTrail(*reinterpret_cast<winrt::Windows::UI::Color const*>(&color));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics> : produce_base<D, winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics>
    {
        std::int32_t __stdcall Create(void* compositor, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::DelegatedInkTrailVisual>(this->shim().Create(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&compositor)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall CreateForSwapChain(void* compositor, void* swapChain, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::DelegatedInkTrailVisual>(this->shim().CreateForSwapChain(*reinterpret_cast<winrt::Windows::UI::Composition::Compositor const*>(&compositor), *reinterpret_cast<winrt::Windows::UI::Composition::ICompositionSurface const*>(&swapChain)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDistantLight> : produce_base<D, winrt::Windows::UI::Composition::IDistantLight>
    {
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CoordinateSpace(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().CoordinateSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CoordinateSpace(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CoordinateSpace(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Direction(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Direction());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Direction(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Direction(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDistantLight2> : produce_base<D, winrt::Windows::UI::Composition::IDistantLight2>
    {
        std::int32_t __stdcall get_Intensity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Intensity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Intensity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Intensity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDropShadow> : produce_base<D, winrt::Windows::UI::Composition::IDropShadow>
    {
        std::int32_t __stdcall get_BlurRadius(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().BlurRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BlurRadius(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BlurRadius(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Mask(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Mask());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Mask(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Mask(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Opacity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Opacity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Opacity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Opacity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IDropShadow2> : produce_base<D, winrt::Windows::UI::Composition::IDropShadow2>
    {
        std::int32_t __stdcall get_SourcePolicy(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionDropShadowSourcePolicy>(this->shim().SourcePolicy());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_SourcePolicy(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().SourcePolicy(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionDropShadowSourcePolicy const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IElasticEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IElasticEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Oscillations(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Oscillations());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Springiness(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Springiness());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IExponentialEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IExponentialEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Exponent(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Exponent());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IExpressionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IExpressionAnimation>
    {
        std::int32_t __stdcall get_Expression(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Expression());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Expression(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Expression(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IImplicitAnimationCollection> : produce_base<D, winrt::Windows::UI::Composition::IImplicitAnimationCollection>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IInsetClip> : produce_base<D, winrt::Windows::UI::Composition::IInsetClip>
    {
        std::int32_t __stdcall get_BottomInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().BottomInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BottomInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BottomInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LeftInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().LeftInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LeftInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LeftInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RightInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RightInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RightInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RightInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TopInset(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().TopInset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TopInset(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TopInset(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IKeyFrameAnimation>
    {
        std::int32_t __stdcall get_DelayTime(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().DelayTime());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DelayTime(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DelayTime(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Duration(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().Duration());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Duration(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Duration(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IterationBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationIterationBehavior>(this->shim().IterationBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IterationBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IterationBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationIterationBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IterationCount(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().IterationCount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IterationCount(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IterationCount(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_KeyFrameCount(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().KeyFrameCount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StopBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationStopBehavior>(this->shim().StopBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StopBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StopBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationStopBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertExpressionKeyFrame(float normalizedProgressKey, void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertExpressionKeyFrame(normalizedProgressKey, *reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertExpressionKeyFrameWithEasingFunction(float normalizedProgressKey, void* value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertExpressionKeyFrame(normalizedProgressKey, *reinterpret_cast<hstring const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IKeyFrameAnimation2> : produce_base<D, winrt::Windows::UI::Composition::IKeyFrameAnimation2>
    {
        std::int32_t __stdcall get_Direction(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationDirection>(this->shim().Direction());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Direction(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Direction(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationDirection const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IKeyFrameAnimation3> : produce_base<D, winrt::Windows::UI::Composition::IKeyFrameAnimation3>
    {
        std::int32_t __stdcall get_DelayBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationDelayBehavior>(this->shim().DelayBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DelayBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DelayBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationDelayBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IKeyFrameAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::IKeyFrameAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ILayerVisual> : produce_base<D, winrt::Windows::UI::Composition::ILayerVisual>
    {
        std::int32_t __stdcall get_Effect(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEffectBrush>(this->shim().Effect());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Effect(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Effect(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionEffectBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ILayerVisual2> : produce_base<D, winrt::Windows::UI::Composition::ILayerVisual2>
    {
        std::int32_t __stdcall get_Shadow(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionShadow>(this->shim().Shadow());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Shadow(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Shadow(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionShadow const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ILinearEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::ILinearEasingFunction>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::INaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::INaturalMotionAnimation>
    {
        std::int32_t __stdcall get_DelayBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationDelayBehavior>(this->shim().DelayBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DelayBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DelayBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationDelayBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_DelayTime(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().DelayTime());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DelayTime(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DelayTime(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StopBehavior(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::AnimationStopBehavior>(this->shim().StopBehavior());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StopBehavior(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StopBehavior(*reinterpret_cast<winrt::Windows::UI::Composition::AnimationStopBehavior const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::INaturalMotionAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::INaturalMotionAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IPathKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IPathKeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, void* path) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::UI::Composition::CompositionPath const*>(&path));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, void* path, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::UI::Composition::CompositionPath const*>(&path), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IPointLight> : produce_base<D, winrt::Windows::UI::Composition::IPointLight>
    {
        std::int32_t __stdcall get_Color(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().Color());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Color(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Color(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ConstantAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().ConstantAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ConstantAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ConstantAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CoordinateSpace(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().CoordinateSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CoordinateSpace(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CoordinateSpace(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LinearAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().LinearAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LinearAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LinearAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_QuadraticAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().QuadraticAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_QuadraticAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().QuadraticAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IPointLight2> : produce_base<D, winrt::Windows::UI::Composition::IPointLight2>
    {
        std::int32_t __stdcall get_Intensity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Intensity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Intensity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Intensity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IPointLight3> : produce_base<D, winrt::Windows::UI::Composition::IPointLight3>
    {
        std::int32_t __stdcall get_MinAttenuationCutoff(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MinAttenuationCutoff());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MinAttenuationCutoff(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MinAttenuationCutoff(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MaxAttenuationCutoff(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MaxAttenuationCutoff());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MaxAttenuationCutoff(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MaxAttenuationCutoff(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IPowerEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IPowerEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Power(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Power());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::quaternion value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::quaternion value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IRectangleClip> : produce_base<D, winrt::Windows::UI::Composition::IRectangleClip>
    {
        std::int32_t __stdcall get_Bottom(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Bottom());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Bottom(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Bottom(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_BottomLeftRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().BottomLeftRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BottomLeftRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BottomLeftRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_BottomRightRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().BottomRightRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BottomRightRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BottomRightRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Left(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Left());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Left(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Left(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Right(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Right());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Right(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Right(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Top(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Top());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Top(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Top(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TopLeftRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().TopLeftRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TopLeftRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TopLeftRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TopRightRadius(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().TopRightRadius());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TopRightRadius(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TopRightRadius(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IRedirectVisual> : produce_base<D, winrt::Windows::UI::Composition::IRedirectVisual>
    {
        std::int32_t __stdcall get_Source(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().Source());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Source(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Source(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs> : produce_base<D, winrt::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs>
    {
        std::int32_t __stdcall get_GraphicsDevice(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionGraphicsDevice>(this->shim().GraphicsDevice());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IScalarKeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IScalarKeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, float value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, value, *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation>
    {
        std::int32_t __stdcall get_FinalValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<float>>(this->shim().FinalValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_FinalValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FinalValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<float> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<float>>(this->shim().InitialValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<float> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialVelocity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().InitialVelocity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialVelocity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialVelocity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IScalarNaturalMotionAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::IScalarNaturalMotionAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IShapeVisual> : produce_base<D, winrt::Windows::UI::Composition::IShapeVisual>
    {
        std::int32_t __stdcall get_Shapes(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionShapeCollection>(this->shim().Shapes());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_ViewBox(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionViewBox>(this->shim().ViewBox());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ViewBox(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ViewBox(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionViewBox const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISineEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::ISineEasingFunction>
    {
        std::int32_t __stdcall get_Mode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionEasingFunctionMode>(this->shim().Mode());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpotLight> : produce_base<D, winrt::Windows::UI::Composition::ISpotLight>
    {
        std::int32_t __stdcall get_ConstantAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().ConstantAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ConstantAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ConstantAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CoordinateSpace(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().CoordinateSpace());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CoordinateSpace(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CoordinateSpace(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Direction(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Direction());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Direction(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Direction(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InnerConeAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().InnerConeAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InnerConeAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InnerConeAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InnerConeAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().InnerConeAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InnerConeAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InnerConeAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InnerConeColor(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().InnerConeColor());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InnerConeColor(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InnerConeColor(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_LinearAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().LinearAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_LinearAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().LinearAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_OuterConeAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().OuterConeAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_OuterConeAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().OuterConeAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_OuterConeAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().OuterConeAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_OuterConeAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().OuterConeAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_OuterConeColor(struct struct_Windows_UI_Color* value) noexcept final try
        {
            zero_abi<winrt::Windows::UI::Color>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Color>(this->shim().OuterConeColor());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_OuterConeColor(struct struct_Windows_UI_Color value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().OuterConeColor(*reinterpret_cast<winrt::Windows::UI::Color const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_QuadraticAttenuation(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().QuadraticAttenuation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_QuadraticAttenuation(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().QuadraticAttenuation(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpotLight2> : produce_base<D, winrt::Windows::UI::Composition::ISpotLight2>
    {
        std::int32_t __stdcall get_InnerConeIntensity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().InnerConeIntensity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InnerConeIntensity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InnerConeIntensity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_OuterConeIntensity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().OuterConeIntensity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_OuterConeIntensity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().OuterConeIntensity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpotLight3> : produce_base<D, winrt::Windows::UI::Composition::ISpotLight3>
    {
        std::int32_t __stdcall get_MinAttenuationCutoff(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MinAttenuationCutoff());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MinAttenuationCutoff(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MinAttenuationCutoff(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_MaxAttenuationCutoff(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().MaxAttenuationCutoff());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_MaxAttenuationCutoff(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().MaxAttenuationCutoff(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation>
    {
        std::int32_t __stdcall get_DampingRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().DampingRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DampingRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DampingRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Period(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().Period());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Period(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Period(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_DampingRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().DampingRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DampingRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DampingRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Period(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().Period());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Period(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Period(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_DampingRatio(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().DampingRatio());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_DampingRatio(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DampingRatio(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Period(std::int64_t* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::TimeSpan>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::TimeSpan>(this->shim().Period());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Period(std::int64_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Period(*reinterpret_cast<winrt::Windows::Foundation::TimeSpan const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpriteVisual> : produce_base<D, winrt::Windows::UI::Composition::ISpriteVisual>
    {
        std::int32_t __stdcall get_Brush(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBrush>(this->shim().Brush());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Brush(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Brush(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBrush const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::ISpriteVisual2> : produce_base<D, winrt::Windows::UI::Composition::ISpriteVisual2>
    {
        std::int32_t __stdcall get_Shadow(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionShadow>(this->shim().Shadow());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Shadow(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Shadow(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionShadow const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IStepEasingFunction> : produce_base<D, winrt::Windows::UI::Composition::IStepEasingFunction>
    {
        std::int32_t __stdcall get_FinalStep(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().FinalStep());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_FinalStep(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FinalStep(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialStep(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().InitialStep());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialStep(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialStep(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsFinalStepSingleFrame(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsFinalStepSingleFrame());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsFinalStepSingleFrame(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsFinalStepSingleFrame(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsInitialStepSingleFrame(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsInitialStepSingleFrame());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsInitialStepSingleFrame(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsInitialStepSingleFrame(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_StepCount(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().StepCount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_StepCount(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StepCount(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector2KeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IVector2KeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float2 value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_FinalValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2>>(this->shim().FinalValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_FinalValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FinalValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2>>(this->shim().InitialValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float2> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialVelocity(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().InitialVelocity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialVelocity(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialVelocity(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector2NaturalMotionAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::IVector2NaturalMotionAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector3KeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IVector3KeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float3 value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation> : produce_base<D, winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation>
    {
        std::int32_t __stdcall get_FinalValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3>>(this->shim().FinalValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_FinalValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FinalValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialValue(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3>>(this->shim().InitialValue());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialValue(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialValue(*reinterpret_cast<winrt::Windows::Foundation::IReference<winrt::Windows::Foundation::Numerics::float3> const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_InitialVelocity(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().InitialVelocity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_InitialVelocity(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InitialVelocity(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector3NaturalMotionAnimationFactory> : produce_base<D, winrt::Windows::UI::Composition::IVector3NaturalMotionAnimationFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVector4KeyFrameAnimation> : produce_base<D, winrt::Windows::UI::Composition::IVector4KeyFrameAnimation>
    {
        std::int32_t __stdcall InsertKeyFrame(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertKeyFrameWithEasingFunction(float normalizedProgressKey, winrt::Windows::Foundation::Numerics::float4 value, void* easingFunction) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertKeyFrame(normalizedProgressKey, *reinterpret_cast<winrt::Windows::Foundation::Numerics::float4 const*>(&value), *reinterpret_cast<winrt::Windows::UI::Composition::CompositionEasingFunction const*>(&easingFunction));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisual> : produce_base<D, winrt::Windows::UI::Composition::IVisual>
    {
        std::int32_t __stdcall get_AnchorPoint(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().AnchorPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_AnchorPoint(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AnchorPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_BackfaceVisibility(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBackfaceVisibility>(this->shim().BackfaceVisibility());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BackfaceVisibility(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BackfaceVisibility(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBackfaceVisibility const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_BorderMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionBorderMode>(this->shim().BorderMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_BorderMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().BorderMode(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionBorderMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CenterPoint(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().CenterPoint());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CenterPoint(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CenterPoint(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Clip(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionClip>(this->shim().Clip());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Clip(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Clip(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionClip const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_CompositeMode(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::CompositionCompositeMode>(this->shim().CompositeMode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_CompositeMode(std::int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CompositeMode(*reinterpret_cast<winrt::Windows::UI::Composition::CompositionCompositeMode const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_IsVisible(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsVisible());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsVisible(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsVisible(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Offset(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Offset());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Offset(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Offset(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Opacity(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().Opacity());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Opacity(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Opacity(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Orientation(winrt::Windows::Foundation::Numerics::quaternion* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::quaternion>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::quaternion>(this->shim().Orientation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Orientation(winrt::Windows::Foundation::Numerics::quaternion value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Orientation(*reinterpret_cast<winrt::Windows::Foundation::Numerics::quaternion const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Parent(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::ContainerVisual>(this->shim().Parent());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngle(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngle(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngle(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAngleInDegrees(float* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<float>(this->shim().RotationAngleInDegrees());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAngleInDegrees(float value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAngleInDegrees(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RotationAxis(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().RotationAxis());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RotationAxis(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RotationAxis(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Scale(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().Scale());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Scale(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Scale(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_Size(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().Size());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_Size(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Size(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_TransformMatrix(winrt::Windows::Foundation::Numerics::float4x4* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float4x4>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float4x4>(this->shim().TransformMatrix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_TransformMatrix(winrt::Windows::Foundation::Numerics::float4x4 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransformMatrix(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float4x4 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisual2> : produce_base<D, winrt::Windows::UI::Composition::IVisual2>
    {
        std::int32_t __stdcall get_ParentForTransform(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().ParentForTransform());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_ParentForTransform(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().ParentForTransform(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RelativeOffsetAdjustment(winrt::Windows::Foundation::Numerics::float3* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float3>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float3>(this->shim().RelativeOffsetAdjustment());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RelativeOffsetAdjustment(winrt::Windows::Foundation::Numerics::float3 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RelativeOffsetAdjustment(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float3 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall get_RelativeSizeAdjustment(winrt::Windows::Foundation::Numerics::float2* value) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::Numerics::float2>(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Numerics::float2>(this->shim().RelativeSizeAdjustment());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_RelativeSizeAdjustment(winrt::Windows::Foundation::Numerics::float2 value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RelativeSizeAdjustment(*reinterpret_cast<winrt::Windows::Foundation::Numerics::float2 const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisual3> : produce_base<D, winrt::Windows::UI::Composition::IVisual3>
    {
        std::int32_t __stdcall get_IsHitTestVisible(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsHitTestVisible());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsHitTestVisible(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsHitTestVisible(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisual4> : produce_base<D, winrt::Windows::UI::Composition::IVisual4>
    {
        std::int32_t __stdcall get_IsPixelSnappingEnabled(bool* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<bool>(this->shim().IsPixelSnappingEnabled());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall put_IsPixelSnappingEnabled(bool value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().IsPixelSnappingEnabled(value);
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisualCollection> : produce_base<D, winrt::Windows::UI::Composition::IVisualCollection>
    {
        std::int32_t __stdcall get_Count(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Count());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAbove(void* newChild, void* sibling) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAbove(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&newChild), *reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&sibling));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAtBottom(void* newChild) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAtBottom(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&newChild));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertAtTop(void* newChild) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertAtTop(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&newChild));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall InsertBelow(void* newChild, void* sibling) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().InsertBelow(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&newChild), *reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&sibling));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Remove(void* child) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Remove(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&child));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveAll() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveAll();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisualElement> : produce_base<D, winrt::Windows::UI::Composition::IVisualElement>
    {
    };
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisualElement2> : produce_base<D, winrt::Windows::UI::Composition::IVisualElement2>
    {
        std::int32_t __stdcall GetVisualInternal(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::UI::Composition::Visual>(this->shim().GetVisualInternal());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisualFactory> : produce_base<D, winrt::Windows::UI::Composition::IVisualFactory>
    {
    };
#endif // WINRT_LEAN_AND_MEAN
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::UI::Composition::IVisualUnorderedCollection> : produce_base<D, winrt::Windows::UI::Composition::IVisualUnorderedCollection>
    {
        std::int32_t __stdcall get_Count(std::int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<std::int32_t>(this->shim().Count());
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Add(void* newVisual) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Add(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&newVisual));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall Remove(void* visual) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Remove(*reinterpret_cast<winrt::Windows::UI::Composition::Visual const*>(&visual));
            return 0;
        }
        catch (...) { return to_hresult(); }
        std::int32_t __stdcall RemoveAll() noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoveAll();
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif // WINRT_LEAN_AND_MEAN
}
WINRT_EXPORT namespace winrt::Windows::UI::Composition
{
    constexpr auto operator|(CompositionBatchTypes const left, CompositionBatchTypes const right) noexcept
    {
        return static_cast<CompositionBatchTypes>(impl::to_underlying_type(left) | impl::to_underlying_type(right));
    }
    constexpr auto operator|=(CompositionBatchTypes& left, CompositionBatchTypes const right) noexcept
    {
        left = left | right;
        return left;
    }
    constexpr auto operator&(CompositionBatchTypes const left, CompositionBatchTypes const right) noexcept
    {
        return static_cast<CompositionBatchTypes>(impl::to_underlying_type(left) & impl::to_underlying_type(right));
    }
    constexpr auto operator&=(CompositionBatchTypes& left, CompositionBatchTypes const right) noexcept
    {
        left = left & right;
        return left;
    }
    constexpr auto operator~(CompositionBatchTypes const value) noexcept
    {
        return static_cast<CompositionBatchTypes>(~impl::to_underlying_type(value));
    }
    constexpr auto operator^(CompositionBatchTypes const left, CompositionBatchTypes const right) noexcept
    {
        return static_cast<CompositionBatchTypes>(impl::to_underlying_type(left) ^ impl::to_underlying_type(right));
    }
    constexpr auto operator^=(CompositionBatchTypes& left, CompositionBatchTypes const right) noexcept
    {
        left = left ^ right;
        return left;
    }
    inline auto AnimationController::MaxPlaybackRate()
    {
        return impl::call_factory_cast<float(*)(IAnimationControllerStatics const&), AnimationController, IAnimationControllerStatics>([](IAnimationControllerStatics const& f) { return f.MaxPlaybackRate(); });
    }
    inline auto AnimationController::MinPlaybackRate()
    {
        return impl::call_factory_cast<float(*)(IAnimationControllerStatics const&), AnimationController, IAnimationControllerStatics>([](IAnimationControllerStatics const& f) { return f.MinPlaybackRate(); });
    }
    inline auto CompositionCapabilities::GetForCurrentView()
    {
        return impl::call_factory_cast<winrt::Windows::UI::Composition::CompositionCapabilities(*)(ICompositionCapabilitiesStatics const&), CompositionCapabilities, ICompositionCapabilitiesStatics>([](ICompositionCapabilitiesStatics const& f) { return f.GetForCurrentView(); });
    }
    inline auto CompositionEasingFunction::CreateCubicBezierEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::Foundation::Numerics::float2 const& controlPoint1, winrt::Windows::Foundation::Numerics::float2 const& controlPoint2)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateCubicBezierEasingFunction(owner, controlPoint1, controlPoint2); });
    }
    inline auto CompositionEasingFunction::CreateLinearEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateLinearEasingFunction(owner); });
    }
    inline auto CompositionEasingFunction::CreateStepEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateStepEasingFunction(owner); });
    }
    inline auto CompositionEasingFunction::CreateStepEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, std::int32_t stepCount)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateStepEasingFunction(owner, stepCount); });
    }
    inline auto CompositionEasingFunction::CreateBackEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float amplitude)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateBackEasingFunction(owner, mode, amplitude); });
    }
    inline auto CompositionEasingFunction::CreateBounceEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, std::int32_t bounces, float bounciness)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateBounceEasingFunction(owner, mode, bounces, bounciness); });
    }
    inline auto CompositionEasingFunction::CreateCircleEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateCircleEasingFunction(owner, mode); });
    }
    inline auto CompositionEasingFunction::CreateElasticEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, std::int32_t oscillations, float springiness)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateElasticEasingFunction(owner, mode, oscillations, springiness); });
    }
    inline auto CompositionEasingFunction::CreateExponentialEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float exponent)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateExponentialEasingFunction(owner, mode, exponent); });
    }
    inline auto CompositionEasingFunction::CreatePowerEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode, float power)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreatePowerEasingFunction(owner, mode, power); });
    }
    inline auto CompositionEasingFunction::CreateSineEasingFunction(winrt::Windows::UI::Composition::Compositor const& owner, winrt::Windows::UI::Composition::CompositionEasingFunctionMode const& mode)
    {
        return impl::call_factory<CompositionEasingFunction, ICompositionEasingFunctionStatics>([&](ICompositionEasingFunctionStatics const& f) { return f.CreateSineEasingFunction(owner, mode); });
    }
    inline CompositionEffectSourceParameter::CompositionEffectSourceParameter(param::hstring const& name) :
        CompositionEffectSourceParameter(impl::call_factory<CompositionEffectSourceParameter, ICompositionEffectSourceParameterFactory>([&](ICompositionEffectSourceParameterFactory const& f) { return f.Create(name); }))
    {
    }
    inline auto CompositionObject::StartAnimationWithIAnimationObject(winrt::Windows::UI::Composition::IAnimationObject const& target, param::hstring const& propertyName, winrt::Windows::UI::Composition::CompositionAnimation const& animation)
    {
        impl::call_factory<CompositionObject, ICompositionObjectStatics>([&](ICompositionObjectStatics const& f) { return f.StartAnimationWithIAnimationObject(target, propertyName, animation); });
    }
    inline auto CompositionObject::StartAnimationGroupWithIAnimationObject(winrt::Windows::UI::Composition::IAnimationObject const& target, winrt::Windows::UI::Composition::ICompositionAnimationBase const& animation)
    {
        impl::call_factory<CompositionObject, ICompositionObjectStatics>([&](ICompositionObjectStatics const& f) { return f.StartAnimationGroupWithIAnimationObject(target, animation); });
    }
    inline CompositionPath::CompositionPath(winrt::Windows::Graphics::IGeometrySource2D const& source) :
        CompositionPath(impl::call_factory<CompositionPath, ICompositionPathFactory>([&](ICompositionPathFactory const& f) { return f.Create(source); }))
    {
    }
    inline auto CompositionProjectedShadowCasterCollection::MaxRespectedCasters()
    {
        return impl::call_factory_cast<std::int32_t(*)(ICompositionProjectedShadowCasterCollectionStatics const&), CompositionProjectedShadowCasterCollection, ICompositionProjectedShadowCasterCollectionStatics>([](ICompositionProjectedShadowCasterCollectionStatics const& f) { return f.MaxRespectedCasters(); });
    }
    inline Compositor::Compositor() :
        Compositor(impl::call_factory_cast<Compositor(*)(winrt::Windows::Foundation::IActivationFactory const&), Compositor>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<Compositor>(); }))
    {
    }
    inline auto Compositor::MaxGlobalPlaybackRate()
    {
        return impl::call_factory_cast<float(*)(ICompositorStatics const&), Compositor, ICompositorStatics>([](ICompositorStatics const& f) { return f.MaxGlobalPlaybackRate(); });
    }
    inline auto Compositor::MinGlobalPlaybackRate()
    {
        return impl::call_factory_cast<float(*)(ICompositorStatics const&), Compositor, ICompositorStatics>([](ICompositorStatics const& f) { return f.MinGlobalPlaybackRate(); });
    }
    inline auto DelegatedInkTrailVisual::Create(winrt::Windows::UI::Composition::Compositor const& compositor)
    {
        return impl::call_factory<DelegatedInkTrailVisual, IDelegatedInkTrailVisualStatics>([&](IDelegatedInkTrailVisualStatics const& f) { return f.Create(compositor); });
    }
    inline auto DelegatedInkTrailVisual::CreateForSwapChain(winrt::Windows::UI::Composition::Compositor const& compositor, winrt::Windows::UI::Composition::ICompositionSurface const& swapChain)
    {
        return impl::call_factory<DelegatedInkTrailVisual, IDelegatedInkTrailVisualStatics>([&](IDelegatedInkTrailVisualStatics const& f) { return f.CreateForSwapChain(compositor, swapChain); });
    }
}
namespace std
{
#ifndef WINRT_LEAN_AND_MEAN
    template<> struct hash<winrt::Windows::UI::Composition::IAmbientLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAmbientLight2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAnimationController> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAnimationControllerStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAnimationObject> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAnimationPropertyInfo> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IAnimationPropertyInfo2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBackEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBooleanKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBounceEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBounceScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBounceVector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IBounceVector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICircleEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IColorKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimation2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimation3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimation4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimationBase> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionAnimationGroup> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionBackdropBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionBatchCompletedEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionBrushFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionCapabilities> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionCapabilitiesStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionClip2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionClipFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionColorBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionColorGradientStop> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionColorGradientStopCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionCommitBatch> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionContainerShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionDrawingSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionDrawingSurface2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionDrawingSurfaceFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEasingFunctionFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEasingFunctionStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEffectBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEffectFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEffectSourceParameter> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEffectSourceParameterFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionEllipseGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGeometricClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGeometryFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGradientBrush2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGradientBrushFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGraphicsDevice> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGraphicsDevice2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGraphicsDevice3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionGraphicsDevice4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLight2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLight3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLightFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLineGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionLinearGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionMaskBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionMipmapSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionNineGridBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObject> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObject2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObject3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObject4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObject5> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObjectFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionObjectStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionPath> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionPathFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionPathGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadowCaster> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadowCasterCollectionStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiver> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionProjectedShadowReceiverUnorderedCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionPropertySet> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionPropertySet2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionRadialGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionRectangleGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionRoundedRectangleGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionScopedBatch> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionShadowFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionShapeFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSpriteShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSupportsSystemBackdrop> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSurfaceBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSurfaceBrush2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSurfaceBrush3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionSurfaceFacade> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTarget> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTargetFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTexture> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTextureFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTransform> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionTransformFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionViewBox> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionVirtualDrawingSurfaceFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositionVisualSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor5> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor6> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor7> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositor8> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositorStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositorWithBlurredWallpaperBackdropBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositorWithProjectedShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositorWithRadialGradient> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICompositorWithVisualSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IContainerVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IContainerVisualFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ICubicBezierEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDelegatedInkTrailVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDelegatedInkTrailVisualStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDistantLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDistantLight2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDropShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IDropShadow2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IElasticEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IExponentialEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IExpressionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IImplicitAnimationCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IInsetClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IKeyFrameAnimation2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IKeyFrameAnimation3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IKeyFrameAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ILayerVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ILayerVisual2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ILinearEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::INaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::INaturalMotionAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IPathKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IPointLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IPointLight2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IPointLight3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IPowerEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IQuaternionKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IRectangleClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IRedirectVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IScalarKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IScalarNaturalMotionAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IShapeVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISineEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpotLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpotLight2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpotLight3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpringScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpringVector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpringVector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpriteVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ISpriteVisual2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IStepEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector2KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector2NaturalMotionAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector3KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector3NaturalMotionAnimationFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVector4KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisual2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisual3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisual4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisualCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisualElement> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisualElement2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisualFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::IVisualUnorderedCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::AmbientLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::AnimationController> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::AnimationPropertyInfo> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BackEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BooleanKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BounceEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BounceScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BounceVector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::BounceVector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CircleEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ColorKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionAnimationGroup> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionBackdropBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionBatchCompletedEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionCapabilities> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionColorBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionColorGradientStop> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionColorGradientStopCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionCommitBatch> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionContainerShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionDrawingSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionEffectBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionEffectFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionEffectSourceParameter> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionEllipseGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionGeometricClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionGraphicsDevice> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionLineGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionLinearGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionMaskBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionMipmapSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionNineGridBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionObject> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionPath> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionPathGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionProjectedShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionProjectedShadowCaster> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionProjectedShadowCasterCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiver> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionProjectedShadowReceiverUnorderedCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionPropertySet> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionRadialGradientBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionRectangleGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionRoundedRectangleGeometry> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionScopedBatch> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionShapeCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionSpriteShape> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionStrokeDashArray> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionSurfaceBrush> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionTarget> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionTexture> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionTransform> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionViewBox> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionVirtualDrawingSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CompositionVisualSurface> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Compositor> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ContainerVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::CubicBezierEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::DelegatedInkTrailVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::DistantLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::DropShadow> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ElasticEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ExponentialEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ExpressionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ImplicitAnimationCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::InitialValueExpressionCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::InsetClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::LayerVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::LinearEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::PathKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::PointLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::PowerEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::QuaternionKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::RectangleClip> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::RedirectVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::RenderingDeviceReplacedEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ScalarKeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::ShapeVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SineEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SpotLight> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SpringScalarNaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SpringVector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SpringVector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::SpriteVisual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::StepEasingFunction> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Vector2KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Vector2NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Vector3KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Vector3NaturalMotionAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Vector4KeyFrameAnimation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::Visual> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::VisualCollection> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::UI::Composition::VisualUnorderedCollection> : winrt::impl::hash_base {};
#endif // WINRT_LEAN_AND_MEAN
#ifdef __cpp_lib_format
#endif // __cpp_lib_format
}
#endif
#endif // WINRT_IMPORT_MODULE
