#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, clashing_extern_declarations, clippy::all)]
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AccessibilityView(pub i32);
impl AccessibilityView {
    pub const Raw: Self = Self(0i32);
    pub const Control: Self = Self(1i32);
    pub const Content: Self = Self(2i32);
}
impl ::core::marker::Copy for AccessibilityView {}
impl ::core::clone::Clone for AccessibilityView {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AccessibilityView {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AccessibilityView {
    type Abi = Self;
}
impl ::core::fmt::Debug for AccessibilityView {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AccessibilityView").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AccessibilityView {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AccessibilityView;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AppBarAutomationPeer(::windows::core::IUnknown);
impl AppBarAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBar>>(owner: Param0) -> ::windows::core::Result<AppBarAutomationPeer> {
        Self::IAppBarAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<AppBarAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBar>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<AppBarAutomationPeer> {
        Self::IAppBarAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<AppBarAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ToggleState(&self) -> ::windows::core::Result<super::ToggleState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe {
            let mut result__: super::ToggleState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ToggleState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ToggleState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Toggle(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Toggle)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsModal(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsModal)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsTopmost(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsTopmost)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Maximizable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Maximizable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Minimizable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Minimizable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn InteractionState(&self) -> ::windows::core::Result<super::WindowInteractionState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: super::WindowInteractionState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).InteractionState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::WindowInteractionState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VisualState(&self) -> ::windows::core::Result<super::WindowVisualState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: super::WindowVisualState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VisualState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::WindowVisualState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Close(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Close)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetVisualState(&self, state: super::WindowVisualState) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetVisualState)(::core::mem::transmute_copy(this), state).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn WaitForInputIdle(&self, milliseconds: i32) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).WaitForInputIdle)(::core::mem::transmute_copy(this), milliseconds, &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc(hidden)]
    pub fn IAppBarAutomationPeerFactory<R, F: FnOnce(&IAppBarAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AppBarAutomationPeer, IAppBarAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AppBarAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AppBarAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AppBarAutomationPeer {}
impl ::core::fmt::Debug for AppBarAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AppBarAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AppBarAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AppBarAutomationPeer;{8b4acfeb-89fa-4f13-84be-35ca5b7c9590})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AppBarAutomationPeer {
    type Vtable = IAppBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IAppBarAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AppBarAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AppBarAutomationPeer";
}
impl ::core::convert::From<AppBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: AppBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &AppBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AppBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: AppBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &AppBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarAutomationPeer> for super::Provider::IWindowProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarAutomationPeer> for super::Provider::IWindowProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IWindowProvider> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IWindowProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IWindowProvider> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IWindowProvider> {
        ::core::convert::TryInto::<super::Provider::IWindowProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<AppBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: AppBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &AppBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarAutomationPeer> for AutomationPeer {
    fn from(value: AppBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarAutomationPeer> for AutomationPeer {
    fn from(value: &AppBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: AppBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: &AppBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AppBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AppBarAutomationPeer {}
unsafe impl ::core::marker::Sync for AppBarAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AppBarButtonAutomationPeer(::windows::core::IUnknown);
impl AppBarButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBarButton>>(owner: Param0) -> ::windows::core::Result<AppBarButtonAutomationPeer> {
        Self::IAppBarButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<AppBarButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBarButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<AppBarButtonAutomationPeer> {
        Self::IAppBarButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<AppBarButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IAppBarButtonAutomationPeerFactory<R, F: FnOnce(&IAppBarButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AppBarButtonAutomationPeer, IAppBarButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AppBarButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AppBarButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AppBarButtonAutomationPeer {}
impl ::core::fmt::Debug for AppBarButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AppBarButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AppBarButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AppBarButtonAutomationPeer;{443262b2-4f6d-4b76-9d2e-3eff777e8864})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AppBarButtonAutomationPeer {
    type Vtable = IAppBarButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IAppBarButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AppBarButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AppBarButtonAutomationPeer";
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarButtonAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarButtonAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for ButtonAutomationPeer {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for ButtonAutomationPeer {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonAutomationPeer> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonAutomationPeer> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for AutomationPeer {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for AutomationPeer {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: AppBarButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &AppBarButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AppBarButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AppBarButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for AppBarButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AppBarToggleButtonAutomationPeer(::windows::core::IUnknown);
impl AppBarToggleButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBarToggleButton>>(owner: Param0) -> ::windows::core::Result<AppBarToggleButtonAutomationPeer> {
        Self::IAppBarToggleButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<AppBarToggleButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AppBarToggleButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<AppBarToggleButtonAutomationPeer> {
        Self::IAppBarToggleButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<AppBarToggleButtonAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IAppBarToggleButtonAutomationPeerFactory<R, F: FnOnce(&IAppBarToggleButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AppBarToggleButtonAutomationPeer, IAppBarToggleButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AppBarToggleButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AppBarToggleButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AppBarToggleButtonAutomationPeer {}
impl ::core::fmt::Debug for AppBarToggleButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AppBarToggleButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AppBarToggleButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AppBarToggleButtonAutomationPeer;{8464efad-9655-4aff-9550-63ae9ec8fe9c})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AppBarToggleButtonAutomationPeer {
    type Vtable = IAppBarToggleButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IAppBarToggleButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AppBarToggleButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AppBarToggleButtonAutomationPeer";
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AppBarToggleButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AppBarToggleButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AppBarToggleButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AppBarToggleButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ToggleButtonAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for AutomationPeer {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for AutomationPeer {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AppBarToggleButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: AppBarToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AppBarToggleButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &AppBarToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AppBarToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AppBarToggleButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for AppBarToggleButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AutoSuggestBoxAutomationPeer(::windows::core::IUnknown);
impl AutoSuggestBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::AutoSuggestBox>>(owner: Param0) -> ::windows::core::Result<AutoSuggestBoxAutomationPeer> {
        Self::IAutoSuggestBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), &mut result__).from_abi::<AutoSuggestBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IAutoSuggestBoxAutomationPeerFactory<R, F: FnOnce(&IAutoSuggestBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutoSuggestBoxAutomationPeer, IAutoSuggestBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AutoSuggestBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AutoSuggestBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AutoSuggestBoxAutomationPeer {}
impl ::core::fmt::Debug for AutoSuggestBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutoSuggestBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutoSuggestBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AutoSuggestBoxAutomationPeer;{2f32c302-f99b-491d-9726-a5e181643efa})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AutoSuggestBoxAutomationPeer {
    type Vtable = IAutoSuggestBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IAutoSuggestBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AutoSuggestBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AutoSuggestBoxAutomationPeer";
}
impl ::core::convert::From<AutoSuggestBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: AutoSuggestBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutoSuggestBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &AutoSuggestBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AutoSuggestBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: AutoSuggestBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutoSuggestBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &AutoSuggestBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<AutoSuggestBoxAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: AutoSuggestBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&AutoSuggestBoxAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &AutoSuggestBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<AutoSuggestBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: AutoSuggestBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AutoSuggestBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &AutoSuggestBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AutoSuggestBoxAutomationPeer> for AutomationPeer {
    fn from(value: AutoSuggestBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AutoSuggestBoxAutomationPeer> for AutomationPeer {
    fn from(value: &AutoSuggestBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<AutoSuggestBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: AutoSuggestBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AutoSuggestBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &AutoSuggestBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AutoSuggestBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AutoSuggestBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for AutoSuggestBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationControlType(pub i32);
impl AutomationControlType {
    pub const Button: Self = Self(0i32);
    pub const Calendar: Self = Self(1i32);
    pub const CheckBox: Self = Self(2i32);
    pub const ComboBox: Self = Self(3i32);
    pub const Edit: Self = Self(4i32);
    pub const Hyperlink: Self = Self(5i32);
    pub const Image: Self = Self(6i32);
    pub const ListItem: Self = Self(7i32);
    pub const List: Self = Self(8i32);
    pub const Menu: Self = Self(9i32);
    pub const MenuBar: Self = Self(10i32);
    pub const MenuItem: Self = Self(11i32);
    pub const ProgressBar: Self = Self(12i32);
    pub const RadioButton: Self = Self(13i32);
    pub const ScrollBar: Self = Self(14i32);
    pub const Slider: Self = Self(15i32);
    pub const Spinner: Self = Self(16i32);
    pub const StatusBar: Self = Self(17i32);
    pub const Tab: Self = Self(18i32);
    pub const TabItem: Self = Self(19i32);
    pub const Text: Self = Self(20i32);
    pub const ToolBar: Self = Self(21i32);
    pub const ToolTip: Self = Self(22i32);
    pub const Tree: Self = Self(23i32);
    pub const TreeItem: Self = Self(24i32);
    pub const Custom: Self = Self(25i32);
    pub const Group: Self = Self(26i32);
    pub const Thumb: Self = Self(27i32);
    pub const DataGrid: Self = Self(28i32);
    pub const DataItem: Self = Self(29i32);
    pub const Document: Self = Self(30i32);
    pub const SplitButton: Self = Self(31i32);
    pub const Window: Self = Self(32i32);
    pub const Pane: Self = Self(33i32);
    pub const Header: Self = Self(34i32);
    pub const HeaderItem: Self = Self(35i32);
    pub const Table: Self = Self(36i32);
    pub const TitleBar: Self = Self(37i32);
    pub const Separator: Self = Self(38i32);
    pub const SemanticZoom: Self = Self(39i32);
    pub const AppBar: Self = Self(40i32);
}
impl ::core::marker::Copy for AutomationControlType {}
impl ::core::clone::Clone for AutomationControlType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationControlType {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationControlType {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationControlType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationControlType").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationControlType {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationControlType;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationEvents(pub i32);
impl AutomationEvents {
    pub const ToolTipOpened: Self = Self(0i32);
    pub const ToolTipClosed: Self = Self(1i32);
    pub const MenuOpened: Self = Self(2i32);
    pub const MenuClosed: Self = Self(3i32);
    pub const AutomationFocusChanged: Self = Self(4i32);
    pub const InvokePatternOnInvoked: Self = Self(5i32);
    pub const SelectionItemPatternOnElementAddedToSelection: Self = Self(6i32);
    pub const SelectionItemPatternOnElementRemovedFromSelection: Self = Self(7i32);
    pub const SelectionItemPatternOnElementSelected: Self = Self(8i32);
    pub const SelectionPatternOnInvalidated: Self = Self(9i32);
    pub const TextPatternOnTextSelectionChanged: Self = Self(10i32);
    pub const TextPatternOnTextChanged: Self = Self(11i32);
    pub const AsyncContentLoaded: Self = Self(12i32);
    pub const PropertyChanged: Self = Self(13i32);
    pub const StructureChanged: Self = Self(14i32);
    pub const DragStart: Self = Self(15i32);
    pub const DragCancel: Self = Self(16i32);
    pub const DragComplete: Self = Self(17i32);
    pub const DragEnter: Self = Self(18i32);
    pub const DragLeave: Self = Self(19i32);
    pub const Dropped: Self = Self(20i32);
    pub const LiveRegionChanged: Self = Self(21i32);
    pub const InputReachedTarget: Self = Self(22i32);
    pub const InputReachedOtherElement: Self = Self(23i32);
    pub const InputDiscarded: Self = Self(24i32);
    pub const WindowClosed: Self = Self(25i32);
    pub const WindowOpened: Self = Self(26i32);
    pub const ConversionTargetChanged: Self = Self(27i32);
    pub const TextEditTextChanged: Self = Self(28i32);
    pub const LayoutInvalidated: Self = Self(29i32);
}
impl ::core::marker::Copy for AutomationEvents {}
impl ::core::clone::Clone for AutomationEvents {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationEvents {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationEvents {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationEvents {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationEvents").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationEvents {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationEvents;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationHeadingLevel(pub i32);
impl AutomationHeadingLevel {
    pub const None: Self = Self(0i32);
    pub const Level1: Self = Self(1i32);
    pub const Level2: Self = Self(2i32);
    pub const Level3: Self = Self(3i32);
    pub const Level4: Self = Self(4i32);
    pub const Level5: Self = Self(5i32);
    pub const Level6: Self = Self(6i32);
    pub const Level7: Self = Self(7i32);
    pub const Level8: Self = Self(8i32);
    pub const Level9: Self = Self(9i32);
}
impl ::core::marker::Copy for AutomationHeadingLevel {}
impl ::core::clone::Clone for AutomationHeadingLevel {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationHeadingLevel {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationHeadingLevel {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationHeadingLevel {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationHeadingLevel").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationHeadingLevel {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationHeadingLevel;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationLandmarkType(pub i32);
impl AutomationLandmarkType {
    pub const None: Self = Self(0i32);
    pub const Custom: Self = Self(1i32);
    pub const Form: Self = Self(2i32);
    pub const Main: Self = Self(3i32);
    pub const Navigation: Self = Self(4i32);
    pub const Search: Self = Self(5i32);
}
impl ::core::marker::Copy for AutomationLandmarkType {}
impl ::core::clone::Clone for AutomationLandmarkType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationLandmarkType {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationLandmarkType {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationLandmarkType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationLandmarkType").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationLandmarkType {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationLandmarkType;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationLiveSetting(pub i32);
impl AutomationLiveSetting {
    pub const Off: Self = Self(0i32);
    pub const Polite: Self = Self(1i32);
    pub const Assertive: Self = Self(2i32);
}
impl ::core::marker::Copy for AutomationLiveSetting {}
impl ::core::clone::Clone for AutomationLiveSetting {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationLiveSetting {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationLiveSetting {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationLiveSetting {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationLiveSetting").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationLiveSetting {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationLiveSetting;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationNavigationDirection(pub i32);
impl AutomationNavigationDirection {
    pub const Parent: Self = Self(0i32);
    pub const NextSibling: Self = Self(1i32);
    pub const PreviousSibling: Self = Self(2i32);
    pub const FirstChild: Self = Self(3i32);
    pub const LastChild: Self = Self(4i32);
}
impl ::core::marker::Copy for AutomationNavigationDirection {}
impl ::core::clone::Clone for AutomationNavigationDirection {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationNavigationDirection {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationNavigationDirection {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationNavigationDirection {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationNavigationDirection").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationNavigationDirection {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationNavigationDirection;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationNotificationKind(pub i32);
impl AutomationNotificationKind {
    pub const ItemAdded: Self = Self(0i32);
    pub const ItemRemoved: Self = Self(1i32);
    pub const ActionCompleted: Self = Self(2i32);
    pub const ActionAborted: Self = Self(3i32);
    pub const Other: Self = Self(4i32);
}
impl ::core::marker::Copy for AutomationNotificationKind {}
impl ::core::clone::Clone for AutomationNotificationKind {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationNotificationKind {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationNotificationKind {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationNotificationKind {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationNotificationKind").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationNotificationKind {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationNotificationKind;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationNotificationProcessing(pub i32);
impl AutomationNotificationProcessing {
    pub const ImportantAll: Self = Self(0i32);
    pub const ImportantMostRecent: Self = Self(1i32);
    pub const All: Self = Self(2i32);
    pub const MostRecent: Self = Self(3i32);
    pub const CurrentThenMostRecent: Self = Self(4i32);
}
impl ::core::marker::Copy for AutomationNotificationProcessing {}
impl ::core::clone::Clone for AutomationNotificationProcessing {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationNotificationProcessing {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationNotificationProcessing {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationNotificationProcessing {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationNotificationProcessing").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationNotificationProcessing {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationNotificationProcessing;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationOrientation(pub i32);
impl AutomationOrientation {
    pub const None: Self = Self(0i32);
    pub const Horizontal: Self = Self(1i32);
    pub const Vertical: Self = Self(2i32);
}
impl ::core::marker::Copy for AutomationOrientation {}
impl ::core::clone::Clone for AutomationOrientation {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationOrientation {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationOrientation {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationOrientation {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationOrientation").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationOrientation {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationOrientation;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AutomationPeer(::windows::core::IUnknown);
impl AutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn EventsSource(&self) -> ::windows::core::Result<AutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).EventsSource)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn SetEventsSource<'a, Param0: ::windows::core::IntoParam<'a, AutomationPeer>>(&self, value: Param0) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).SetEventsSource)(::core::mem::transmute_copy(this), value.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetPattern(&self, patterninterface: PatternInterface) -> ::windows::core::Result<::windows::core::IInspectable> {
        let this = self;
        unsafe {
            let mut result__: *mut ::core::ffi::c_void = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetPattern)(::core::mem::transmute_copy(this), patterninterface, &mut result__).from_abi::<::windows::core::IInspectable>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn RaiseAutomationEvent(&self, eventid: AutomationEvents) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).RaiseAutomationEvent)(::core::mem::transmute_copy(this), eventid).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn RaisePropertyChangedEvent<'a, Param0: ::windows::core::IntoParam<'a, super::AutomationProperty>, Param1: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param2: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>>(&self, automationproperty: Param0, oldvalue: Param1, newvalue: Param2) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).RaisePropertyChangedEvent)(::core::mem::transmute_copy(this), automationproperty.into_param().abi(), oldvalue.into_param().abi(), newvalue.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetAcceleratorKey(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetAcceleratorKey)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetAccessKey(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetAccessKey)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetAutomationControlType(&self) -> ::windows::core::Result<AutomationControlType> {
        let this = self;
        unsafe {
            let mut result__: AutomationControlType = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetAutomationControlType)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationControlType>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetAutomationId(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetAutomationId)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation'*"]
    #[cfg(feature = "Foundation")]
    pub fn GetBoundingRectangle(&self) -> ::windows::core::Result<super::super::super::super::Foundation::Rect> {
        let this = self;
        unsafe {
            let mut result__: super::super::super::super::Foundation::Rect = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetBoundingRectangle)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::super::Foundation::Rect>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation_Collections'*"]
    #[cfg(feature = "Foundation_Collections")]
    pub fn GetChildren(&self) -> ::windows::core::Result<super::super::super::super::Foundation::Collections::IVector<AutomationPeer>> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetChildren)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::super::Foundation::Collections::IVector<AutomationPeer>>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetClassName(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetClassName)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation'*"]
    #[cfg(feature = "Foundation")]
    pub fn GetClickablePoint(&self) -> ::windows::core::Result<super::super::super::super::Foundation::Point> {
        let this = self;
        unsafe {
            let mut result__: super::super::super::super::Foundation::Point = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetClickablePoint)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::super::Foundation::Point>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetHelpText(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetHelpText)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetItemStatus(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetItemStatus)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetItemType(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetItemType)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLabeledBy(&self) -> ::windows::core::Result<AutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLabeledBy)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLocalizedControlType(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLocalizedControlType)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetName(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = self;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetName)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetOrientation(&self) -> ::windows::core::Result<AutomationOrientation> {
        let this = self;
        unsafe {
            let mut result__: AutomationOrientation = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetOrientation)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationOrientation>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn HasKeyboardFocus(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HasKeyboardFocus)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsContentElement(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsContentElement)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsControlElement(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsControlElement)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsEnabled(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsEnabled)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsKeyboardFocusable(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsKeyboardFocusable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsOffscreen(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsOffscreen)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsPassword(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsPassword)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsRequiredForForm(&self) -> ::windows::core::Result<bool> {
        let this = self;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsRequiredForForm)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn SetFocus(&self) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).SetFocus)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'deprecated'*"]
    #[cfg(feature = "deprecated")]
    pub fn GetParent(&self) -> ::windows::core::Result<AutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetParent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn InvalidatePeer(&self) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).InvalidatePeer)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation', 'deprecated'*"]
    #[cfg(all(feature = "Foundation", feature = "deprecated"))]
    pub fn GetPeerFromPoint<'a, Param0: ::windows::core::IntoParam<'a, super::super::super::super::Foundation::Point>>(&self, point: Param0) -> ::windows::core::Result<AutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetPeerFromPoint)(::core::mem::transmute_copy(this), point.into_param().abi(), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLiveSetting(&self) -> ::windows::core::Result<AutomationLiveSetting> {
        let this = self;
        unsafe {
            let mut result__: AutomationLiveSetting = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLiveSetting)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationLiveSetting>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn Navigate(&self, direction: AutomationNavigationDirection) -> ::windows::core::Result<::windows::core::IInspectable> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: *mut ::core::ffi::c_void = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Navigate)(::core::mem::transmute_copy(this), direction, &mut result__).from_abi::<::windows::core::IInspectable>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation'*"]
    #[cfg(feature = "Foundation")]
    pub fn GetElementFromPoint<'a, Param0: ::windows::core::IntoParam<'a, super::super::super::super::Foundation::Point>>(&self, pointinwindowcoordinates: Param0) -> ::windows::core::Result<::windows::core::IInspectable> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: *mut ::core::ffi::c_void = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetElementFromPoint)(::core::mem::transmute_copy(this), pointinwindowcoordinates.into_param().abi(), &mut result__).from_abi::<::windows::core::IInspectable>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetFocusedElement(&self) -> ::windows::core::Result<::windows::core::IInspectable> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: *mut ::core::ffi::c_void = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetFocusedElement)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::IInspectable>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn ShowContextMenu(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ShowContextMenu)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation_Collections'*"]
    #[cfg(feature = "Foundation_Collections")]
    pub fn GetControlledPeers(&self) -> ::windows::core::Result<super::super::super::super::Foundation::Collections::IVectorView<AutomationPeer>> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetControlledPeers)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::super::Foundation::Collections::IVectorView<AutomationPeer>>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation_Collections'*"]
    #[cfg(feature = "Foundation_Collections")]
    pub fn GetAnnotations(&self) -> ::windows::core::Result<super::super::super::super::Foundation::Collections::IVector<AutomationPeerAnnotation>> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetAnnotations)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::super::Foundation::Collections::IVector<AutomationPeerAnnotation>>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn SetParent<'a, Param0: ::windows::core::IntoParam<'a, AutomationPeer>>(&self, peer: Param0) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetParent)(::core::mem::transmute_copy(this), peer.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'Foundation_Collections'*"]
    #[cfg(feature = "Foundation_Collections")]
    pub fn RaiseTextEditTextChangedEvent<'a, Param1: ::windows::core::IntoParam<'a, super::super::super::super::Foundation::Collections::IVectorView<::windows::core::HSTRING>>>(&self, automationtexteditchangetype: super::AutomationTextEditChangeType, changeddata: Param1) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RaiseTextEditTextChangedEvent)(::core::mem::transmute_copy(this), automationtexteditchangetype, changeddata.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetPositionInSet(&self) -> ::windows::core::Result<i32> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: i32 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetPositionInSet)(::core::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetSizeOfSet(&self) -> ::windows::core::Result<i32> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: i32 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetSizeOfSet)(::core::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLevel(&self) -> ::windows::core::Result<i32> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe {
            let mut result__: i32 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLevel)(::core::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn RaiseStructureChangedEvent<'a, Param1: ::windows::core::IntoParam<'a, AutomationPeer>>(&self, structurechangetype: AutomationStructureChangeType, child: Param1) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer3>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RaiseStructureChangedEvent)(::core::mem::transmute_copy(this), structurechangetype, child.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLandmarkType(&self) -> ::windows::core::Result<AutomationLandmarkType> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer4>(self)?;
        unsafe {
            let mut result__: AutomationLandmarkType = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLandmarkType)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationLandmarkType>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetLocalizedLandmarkType(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer4>(self)?;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetLocalizedLandmarkType)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsPeripheral(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer5>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsPeripheral)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsDataValidForForm(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer5>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsDataValidForForm)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetFullDescription(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer5>(self)?;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetFullDescription)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetCulture(&self) -> ::windows::core::Result<i32> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer6>(self)?;
        unsafe {
            let mut result__: i32 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetCulture)(::core::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn RaiseNotificationEvent<'a, Param2: ::windows::core::IntoParam<'a, ::windows::core::HSTRING>, Param3: ::windows::core::IntoParam<'a, ::windows::core::HSTRING>>(&self, notificationkind: AutomationNotificationKind, notificationprocessing: AutomationNotificationProcessing, displaystring: Param2, activityid: Param3) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer7>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RaiseNotificationEvent)(::core::mem::transmute_copy(this), notificationkind, notificationprocessing, displaystring.into_param().abi(), activityid.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GetHeadingLevel(&self) -> ::windows::core::Result<AutomationHeadingLevel> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer8>(self)?;
        unsafe {
            let mut result__: AutomationHeadingLevel = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetHeadingLevel)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationHeadingLevel>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn IsDialog(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<IAutomationPeer9>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsDialog)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn PeerFromProvider<'a, Param0: ::windows::core::IntoParam<'a, super::Provider::IRawElementProviderSimple>>(&self, provider: Param0) -> ::windows::core::Result<AutomationPeer> {
        let this = &::windows::core::Interface::cast::<IAutomationPeerProtected>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).PeerFromProvider)(::core::mem::transmute_copy(this), provider.into_param().abi(), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ProviderFromPeer<'a, Param0: ::windows::core::IntoParam<'a, AutomationPeer>>(&self, peer: Param0) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<IAutomationPeerProtected>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ProviderFromPeer)(::core::mem::transmute_copy(this), peer.into_param().abi(), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn ListenerExists(eventid: AutomationEvents) -> ::windows::core::Result<bool> {
        Self::IAutomationPeerStatics(|this| unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ListenerExists)(::core::mem::transmute_copy(this), eventid, &mut result__).from_abi::<bool>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn GenerateRawElementProviderRuntimeId() -> ::windows::core::Result<RawElementProviderRuntimeId> {
        Self::IAutomationPeerStatics3(|this| unsafe {
            let mut result__: RawElementProviderRuntimeId = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GenerateRawElementProviderRuntimeId)(::core::mem::transmute_copy(this), &mut result__).from_abi::<RawElementProviderRuntimeId>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IAutomationPeerStatics<R, F: FnOnce(&IAutomationPeerStatics) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutomationPeer, IAutomationPeerStatics> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
    #[doc(hidden)]
    pub fn IAutomationPeerStatics3<R, F: FnOnce(&IAutomationPeerStatics3) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutomationPeer, IAutomationPeerStatics3> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AutomationPeer {}
impl ::core::fmt::Debug for AutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AutomationPeer;{35aac87a-62ee-4d3e-a24c-2bc8432d68b7})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AutomationPeer {
    type Vtable = IAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AutomationPeer";
}
impl ::core::convert::From<AutomationPeer> for ::windows::core::IUnknown {
    fn from(value: AutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &AutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AutomationPeer> for ::windows::core::IInspectable {
    fn from(value: AutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &AutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AutomationPeer> for super::super::DependencyObject {
    fn from(value: AutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AutomationPeer> for super::super::DependencyObject {
    fn from(value: &AutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AutomationPeer {}
unsafe impl ::core::marker::Sync for AutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct AutomationPeerAnnotation(::windows::core::IUnknown);
impl AutomationPeerAnnotation {
    pub fn new() -> ::windows::core::Result<Self> {
        Self::IActivationFactory(|f| f.activate_instance::<Self>())
    }
    fn IActivationFactory<R, F: FnOnce(&::windows::core::IActivationFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutomationPeerAnnotation, ::windows::core::IActivationFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn Type(&self) -> ::windows::core::Result<super::AnnotationType> {
        let this = self;
        unsafe {
            let mut result__: super::AnnotationType = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Type)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::AnnotationType>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn SetType(&self, value: super::AnnotationType) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).SetType)(::core::mem::transmute_copy(this), value).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn Peer(&self) -> ::windows::core::Result<AutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Peer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<AutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn SetPeer<'a, Param0: ::windows::core::IntoParam<'a, AutomationPeer>>(&self, value: Param0) -> ::windows::core::Result<()> {
        let this = self;
        unsafe { (::windows::core::Interface::vtable(this).SetPeer)(::core::mem::transmute_copy(this), value.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstance(r#type: super::AnnotationType) -> ::windows::core::Result<AutomationPeerAnnotation> {
        Self::IAutomationPeerAnnotationFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstance)(::core::mem::transmute_copy(this), r#type, &mut result__).from_abi::<AutomationPeerAnnotation>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateWithPeerParameter<'a, Param1: ::windows::core::IntoParam<'a, AutomationPeer>>(r#type: super::AnnotationType, peer: Param1) -> ::windows::core::Result<AutomationPeerAnnotation> {
        Self::IAutomationPeerAnnotationFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateWithPeerParameter)(::core::mem::transmute_copy(this), r#type, peer.into_param().abi(), &mut result__).from_abi::<AutomationPeerAnnotation>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn TypeProperty() -> ::windows::core::Result<super::super::DependencyProperty> {
        Self::IAutomationPeerAnnotationStatics(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).TypeProperty)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::DependencyProperty>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn PeerProperty() -> ::windows::core::Result<super::super::DependencyProperty> {
        Self::IAutomationPeerAnnotationStatics(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).PeerProperty)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::DependencyProperty>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IAutomationPeerAnnotationFactory<R, F: FnOnce(&IAutomationPeerAnnotationFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutomationPeerAnnotation, IAutomationPeerAnnotationFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
    #[doc(hidden)]
    pub fn IAutomationPeerAnnotationStatics<R, F: FnOnce(&IAutomationPeerAnnotationStatics) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<AutomationPeerAnnotation, IAutomationPeerAnnotationStatics> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for AutomationPeerAnnotation {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for AutomationPeerAnnotation {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for AutomationPeerAnnotation {}
impl ::core::fmt::Debug for AutomationPeerAnnotation {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationPeerAnnotation").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationPeerAnnotation {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.AutomationPeerAnnotation;{0c456061-52cf-43fa-82f8-07f137351e5a})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for AutomationPeerAnnotation {
    type Vtable = IAutomationPeerAnnotation_Vtbl;
    const IID: ::windows::core::GUID = <IAutomationPeerAnnotation as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for AutomationPeerAnnotation {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.AutomationPeerAnnotation";
}
impl ::core::convert::From<AutomationPeerAnnotation> for ::windows::core::IUnknown {
    fn from(value: AutomationPeerAnnotation) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutomationPeerAnnotation> for ::windows::core::IUnknown {
    fn from(value: &AutomationPeerAnnotation) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AutomationPeerAnnotation> for ::windows::core::IInspectable {
    fn from(value: AutomationPeerAnnotation) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&AutomationPeerAnnotation> for ::windows::core::IInspectable {
    fn from(value: &AutomationPeerAnnotation) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<AutomationPeerAnnotation> for super::super::DependencyObject {
    fn from(value: AutomationPeerAnnotation) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&AutomationPeerAnnotation> for super::super::DependencyObject {
    fn from(value: &AutomationPeerAnnotation) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &AutomationPeerAnnotation {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for AutomationPeerAnnotation {}
unsafe impl ::core::marker::Sync for AutomationPeerAnnotation {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct AutomationStructureChangeType(pub i32);
impl AutomationStructureChangeType {
    pub const ChildAdded: Self = Self(0i32);
    pub const ChildRemoved: Self = Self(1i32);
    pub const ChildrenInvalidated: Self = Self(2i32);
    pub const ChildrenBulkAdded: Self = Self(3i32);
    pub const ChildrenBulkRemoved: Self = Self(4i32);
    pub const ChildrenReordered: Self = Self(5i32);
}
impl ::core::marker::Copy for AutomationStructureChangeType {}
impl ::core::clone::Clone for AutomationStructureChangeType {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for AutomationStructureChangeType {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for AutomationStructureChangeType {
    type Abi = Self;
}
impl ::core::fmt::Debug for AutomationStructureChangeType {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("AutomationStructureChangeType").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for AutomationStructureChangeType {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.AutomationStructureChangeType;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ButtonAutomationPeer(::windows::core::IUnknown);
impl ButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Button>>(owner: Param0) -> ::windows::core::Result<ButtonAutomationPeer> {
        Self::IButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Button>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ButtonAutomationPeer> {
        Self::IButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IButtonAutomationPeerFactory<R, F: FnOnce(&IButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ButtonAutomationPeer, IButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ButtonAutomationPeer {}
impl ::core::fmt::Debug for ButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ButtonAutomationPeer;{fb77efbe-39ec-4508-8ac3-51a1424027d7})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ButtonAutomationPeer {
    type Vtable = IButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ButtonAutomationPeer";
}
impl ::core::convert::From<ButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ButtonAutomationPeer> for AutomationPeer {
    fn from(value: ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for AutomationPeer {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: ButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for ButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ButtonBaseAutomationPeer(::windows::core::IUnknown);
impl ButtonBaseAutomationPeer {}
impl ::core::clone::Clone for ButtonBaseAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ButtonBaseAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ButtonBaseAutomationPeer {}
impl ::core::fmt::Debug for ButtonBaseAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ButtonBaseAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ButtonBaseAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ButtonBaseAutomationPeer;{a4f3b5b6-7585-4e0b-96d2-08cf6f28befa})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ButtonBaseAutomationPeer {
    type Vtable = IButtonBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IButtonBaseAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ButtonBaseAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ButtonBaseAutomationPeer";
}
impl ::core::convert::From<ButtonBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ButtonBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ButtonBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ButtonBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ButtonBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ButtonBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ButtonBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ButtonBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ButtonBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ButtonBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ButtonBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ButtonBaseAutomationPeer> for AutomationPeer {
    fn from(value: ButtonBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonBaseAutomationPeer> for AutomationPeer {
    fn from(value: &ButtonBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ButtonBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: ButtonBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ButtonBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ButtonBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ButtonBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ButtonBaseAutomationPeer {}
unsafe impl ::core::marker::Sync for ButtonBaseAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct CalendarDatePickerAutomationPeer(::windows::core::IUnknown);
impl CalendarDatePickerAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CalendarDatePicker>>(owner: Param0) -> ::windows::core::Result<CalendarDatePickerAutomationPeer> {
        Self::ICalendarDatePickerAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<CalendarDatePickerAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CalendarDatePicker>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<CalendarDatePickerAutomationPeer> {
        Self::ICalendarDatePickerAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<CalendarDatePickerAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsReadOnly(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsReadOnly)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Value(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Value)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetValue<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::HSTRING>>(&self, value: Param0) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetValue)(::core::mem::transmute_copy(this), value.into_param().abi()).ok() }
    }
    #[doc(hidden)]
    pub fn ICalendarDatePickerAutomationPeerFactory<R, F: FnOnce(&ICalendarDatePickerAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<CalendarDatePickerAutomationPeer, ICalendarDatePickerAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for CalendarDatePickerAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for CalendarDatePickerAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for CalendarDatePickerAutomationPeer {}
impl ::core::fmt::Debug for CalendarDatePickerAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CalendarDatePickerAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for CalendarDatePickerAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.CalendarDatePickerAutomationPeer;{40d8938e-db5e-4b03-beba-d10f62419787})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for CalendarDatePickerAutomationPeer {
    type Vtable = ICalendarDatePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ICalendarDatePickerAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for CalendarDatePickerAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.CalendarDatePickerAutomationPeer";
}
impl ::core::convert::From<CalendarDatePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: CalendarDatePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CalendarDatePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &CalendarDatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<CalendarDatePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: CalendarDatePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CalendarDatePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &CalendarDatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<CalendarDatePickerAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: CalendarDatePickerAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&CalendarDatePickerAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &CalendarDatePickerAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<CalendarDatePickerAutomationPeer> for super::Provider::IValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: CalendarDatePickerAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&CalendarDatePickerAutomationPeer> for super::Provider::IValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &CalendarDatePickerAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IValueProvider> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IValueProvider> for &CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IValueProvider> {
        ::core::convert::TryInto::<super::Provider::IValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<CalendarDatePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: CalendarDatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CalendarDatePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &CalendarDatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CalendarDatePickerAutomationPeer> for AutomationPeer {
    fn from(value: CalendarDatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CalendarDatePickerAutomationPeer> for AutomationPeer {
    fn from(value: &CalendarDatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CalendarDatePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: CalendarDatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CalendarDatePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: &CalendarDatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &CalendarDatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for CalendarDatePickerAutomationPeer {}
unsafe impl ::core::marker::Sync for CalendarDatePickerAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct CaptureElementAutomationPeer(::windows::core::IUnknown);
impl CaptureElementAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CaptureElement>>(owner: Param0) -> ::windows::core::Result<CaptureElementAutomationPeer> {
        Self::ICaptureElementAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<CaptureElementAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CaptureElement>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<CaptureElementAutomationPeer> {
        Self::ICaptureElementAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<CaptureElementAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ICaptureElementAutomationPeerFactory<R, F: FnOnce(&ICaptureElementAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<CaptureElementAutomationPeer, ICaptureElementAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for CaptureElementAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for CaptureElementAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for CaptureElementAutomationPeer {}
impl ::core::fmt::Debug for CaptureElementAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CaptureElementAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for CaptureElementAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.CaptureElementAutomationPeer;{dcc44ee0-fa45-45c6-8bb7-320d808f5958})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for CaptureElementAutomationPeer {
    type Vtable = ICaptureElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ICaptureElementAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for CaptureElementAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.CaptureElementAutomationPeer";
}
impl ::core::convert::From<CaptureElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: CaptureElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CaptureElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &CaptureElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<CaptureElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: CaptureElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CaptureElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &CaptureElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<CaptureElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: CaptureElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CaptureElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &CaptureElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CaptureElementAutomationPeer> for AutomationPeer {
    fn from(value: CaptureElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CaptureElementAutomationPeer> for AutomationPeer {
    fn from(value: &CaptureElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CaptureElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: CaptureElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CaptureElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: &CaptureElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &CaptureElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for CaptureElementAutomationPeer {}
unsafe impl ::core::marker::Sync for CaptureElementAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct CheckBoxAutomationPeer(::windows::core::IUnknown);
impl CheckBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CheckBox>>(owner: Param0) -> ::windows::core::Result<CheckBoxAutomationPeer> {
        Self::ICheckBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<CheckBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::CheckBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<CheckBoxAutomationPeer> {
        Self::ICheckBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<CheckBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ICheckBoxAutomationPeerFactory<R, F: FnOnce(&ICheckBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<CheckBoxAutomationPeer, ICheckBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for CheckBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for CheckBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for CheckBoxAutomationPeer {}
impl ::core::fmt::Debug for CheckBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("CheckBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for CheckBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.CheckBoxAutomationPeer;{eb15bc42-c0a9-46c6-ac24-b83de429c733})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for CheckBoxAutomationPeer {
    type Vtable = ICheckBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ICheckBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for CheckBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.CheckBoxAutomationPeer";
}
impl ::core::convert::From<CheckBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<CheckBoxAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: CheckBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&CheckBoxAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &CheckBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ToggleButtonAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for AutomationPeer {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for AutomationPeer {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<CheckBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: CheckBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&CheckBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &CheckBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &CheckBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for CheckBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for CheckBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ColorPickerSliderAutomationPeer(::windows::core::IUnknown);
impl ColorPickerSliderAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ColorPickerSlider>>(owner: Param0) -> ::windows::core::Result<ColorPickerSliderAutomationPeer> {
        Self::IColorPickerSliderAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ColorPickerSliderAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ColorPickerSlider>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ColorPickerSliderAutomationPeer> {
        Self::IColorPickerSliderAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ColorPickerSliderAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IColorPickerSliderAutomationPeerFactory<R, F: FnOnce(&IColorPickerSliderAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ColorPickerSliderAutomationPeer, IColorPickerSliderAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ColorPickerSliderAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ColorPickerSliderAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ColorPickerSliderAutomationPeer {}
impl ::core::fmt::Debug for ColorPickerSliderAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ColorPickerSliderAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ColorPickerSliderAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ColorPickerSliderAutomationPeer;{a514215a-7293-4577-924c-47d4e0bf9b90})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ColorPickerSliderAutomationPeer {
    type Vtable = IColorPickerSliderAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IColorPickerSliderAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ColorPickerSliderAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ColorPickerSliderAutomationPeer";
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ColorPickerSliderAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ColorPickerSliderAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ColorPickerSliderAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ColorPickerSliderAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::core::convert::TryInto::<super::Provider::IRangeValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for SliderAutomationPeer {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for SliderAutomationPeer {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SliderAutomationPeer> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SliderAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SliderAutomationPeer> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SliderAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SliderAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<RangeBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for AutomationPeer {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for AutomationPeer {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorPickerSliderAutomationPeer> for super::super::DependencyObject {
    fn from(value: ColorPickerSliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorPickerSliderAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ColorPickerSliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ColorPickerSliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ColorPickerSliderAutomationPeer {}
unsafe impl ::core::marker::Sync for ColorPickerSliderAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ColorSpectrumAutomationPeer(::windows::core::IUnknown);
impl ColorSpectrumAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ColorSpectrum>>(owner: Param0) -> ::windows::core::Result<ColorSpectrumAutomationPeer> {
        Self::IColorSpectrumAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ColorSpectrumAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ColorSpectrum>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ColorSpectrumAutomationPeer> {
        Self::IColorSpectrumAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ColorSpectrumAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IColorSpectrumAutomationPeerFactory<R, F: FnOnce(&IColorSpectrumAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ColorSpectrumAutomationPeer, IColorSpectrumAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ColorSpectrumAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ColorSpectrumAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ColorSpectrumAutomationPeer {}
impl ::core::fmt::Debug for ColorSpectrumAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ColorSpectrumAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ColorSpectrumAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ColorSpectrumAutomationPeer;{15d5ba03-010d-4ff7-9087-f4dd09f831b7})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ColorSpectrumAutomationPeer {
    type Vtable = IColorSpectrumAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IColorSpectrumAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ColorSpectrumAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ColorSpectrumAutomationPeer";
}
impl ::core::convert::From<ColorSpectrumAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ColorSpectrumAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ColorSpectrumAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ColorSpectrumAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ColorSpectrumAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ColorSpectrumAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ColorSpectrumAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ColorSpectrumAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ColorSpectrumAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ColorSpectrumAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorSpectrumAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ColorSpectrumAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorSpectrumAutomationPeer> for AutomationPeer {
    fn from(value: ColorSpectrumAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorSpectrumAutomationPeer> for AutomationPeer {
    fn from(value: &ColorSpectrumAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ColorSpectrumAutomationPeer> for super::super::DependencyObject {
    fn from(value: ColorSpectrumAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ColorSpectrumAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ColorSpectrumAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ColorSpectrumAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ColorSpectrumAutomationPeer {}
unsafe impl ::core::marker::Sync for ColorSpectrumAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ComboBoxAutomationPeer(::windows::core::IUnknown);
impl ComboBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ComboBox>>(owner: Param0) -> ::windows::core::Result<ComboBoxAutomationPeer> {
        Self::IComboBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ComboBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ComboBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ComboBoxAutomationPeer> {
        Self::IComboBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ComboBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsReadOnly(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsReadOnly)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Value(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Value)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetValue<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::HSTRING>>(&self, value: Param0) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IValueProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetValue)(::core::mem::transmute_copy(this), value.into_param().abi()).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsModal(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsModal)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsTopmost(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsTopmost)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Maximizable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Maximizable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Minimizable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Minimizable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn InteractionState(&self) -> ::windows::core::Result<super::WindowInteractionState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: super::WindowInteractionState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).InteractionState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::WindowInteractionState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VisualState(&self) -> ::windows::core::Result<super::WindowVisualState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: super::WindowVisualState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VisualState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::WindowVisualState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Close(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Close)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetVisualState(&self, state: super::WindowVisualState) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetVisualState)(::core::mem::transmute_copy(this), state).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn WaitForInputIdle(&self, milliseconds: i32) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IWindowProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).WaitForInputIdle)(::core::mem::transmute_copy(this), milliseconds, &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc(hidden)]
    pub fn IComboBoxAutomationPeerFactory<R, F: FnOnce(&IComboBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ComboBoxAutomationPeer, IComboBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ComboBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ComboBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ComboBoxAutomationPeer {}
impl ::core::fmt::Debug for ComboBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ComboBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ComboBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ComboBoxAutomationPeer;{7eb40d0b-75c5-4263-ba6a-d4a54fb0f239})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ComboBoxAutomationPeer {
    type Vtable = IComboBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IComboBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ComboBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ComboBoxAutomationPeer";
}
impl ::core::convert::From<ComboBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxAutomationPeer> for super::Provider::IValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxAutomationPeer> for super::Provider::IValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IValueProvider> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IValueProvider> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IValueProvider> {
        ::core::convert::TryInto::<super::Provider::IValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxAutomationPeer> for super::Provider::IWindowProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxAutomationPeer> for super::Provider::IWindowProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IWindowProvider> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IWindowProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IWindowProvider> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IWindowProvider> {
        ::core::convert::TryInto::<super::Provider::IWindowProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for SelectorAutomationPeer {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for AutomationPeer {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for AutomationPeer {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: ComboBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ComboBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ComboBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ComboBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for ComboBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ComboBoxItemAutomationPeer(::windows::core::IUnknown);
impl ComboBoxItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ComboBoxItem>>(owner: Param0) -> ::windows::core::Result<ComboBoxItemAutomationPeer> {
        Self::IComboBoxItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ComboBoxItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ComboBoxItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ComboBoxItemAutomationPeer> {
        Self::IComboBoxItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ComboBoxItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IComboBoxItemAutomationPeerFactory<R, F: FnOnce(&IComboBoxItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ComboBoxItemAutomationPeer, IComboBoxItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ComboBoxItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ComboBoxItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ComboBoxItemAutomationPeer {}
impl ::core::fmt::Debug for ComboBoxItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ComboBoxItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ComboBoxItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ComboBoxItemAutomationPeer;{12ddc76e-9552-446a-82ee-938cc371800f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ComboBoxItemAutomationPeer {
    type Vtable = IComboBoxItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IComboBoxItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ComboBoxItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ComboBoxItemAutomationPeer";
}
impl ::core::convert::From<ComboBoxItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ComboBoxItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ComboBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ComboBoxItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ComboBoxItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ComboBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ComboBoxItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ComboBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ComboBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxItemAutomationPeer> for AutomationPeer {
    fn from(value: ComboBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemAutomationPeer> for AutomationPeer {
    fn from(value: &ComboBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ComboBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ComboBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ComboBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ComboBoxItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ComboBoxItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ComboBoxItemDataAutomationPeer(::windows::core::IUnknown);
impl ComboBoxItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ComboBoxAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<ComboBoxItemDataAutomationPeer> {
        Self::IComboBoxItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ComboBoxItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ComboBoxAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<ComboBoxItemDataAutomationPeer> {
        Self::IComboBoxItemDataAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ComboBoxItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IComboBoxItemDataAutomationPeerFactory<R, F: FnOnce(&IComboBoxItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ComboBoxItemDataAutomationPeer, IComboBoxItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ComboBoxItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ComboBoxItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ComboBoxItemDataAutomationPeer {}
impl ::core::fmt::Debug for ComboBoxItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ComboBoxItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ComboBoxItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ComboBoxItemDataAutomationPeer;{4fef6df2-289c-4c04-831b-5a668c6d7104})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ComboBoxItemDataAutomationPeer {
    type Vtable = IComboBoxItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IComboBoxItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ComboBoxItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ComboBoxItemDataAutomationPeer";
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ComboBoxItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ComboBoxItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ComboBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for AutomationPeer {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ComboBoxItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: ComboBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ComboBoxItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ComboBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ComboBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ComboBoxItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for ComboBoxItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct DatePickerAutomationPeer(::windows::core::IUnknown);
impl DatePickerAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::DatePicker>>(owner: Param0) -> ::windows::core::Result<DatePickerAutomationPeer> {
        Self::IDatePickerAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<DatePickerAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::DatePicker>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<DatePickerAutomationPeer> {
        Self::IDatePickerAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<DatePickerAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IDatePickerAutomationPeerFactory<R, F: FnOnce(&IDatePickerAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<DatePickerAutomationPeer, IDatePickerAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for DatePickerAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for DatePickerAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for DatePickerAutomationPeer {}
impl ::core::fmt::Debug for DatePickerAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DatePickerAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for DatePickerAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.DatePickerAutomationPeer;{d07d357f-a0b9-45dc-991a-76c505e7d0f5})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for DatePickerAutomationPeer {
    type Vtable = IDatePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IDatePickerAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for DatePickerAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.DatePickerAutomationPeer";
}
impl ::core::convert::From<DatePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: DatePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&DatePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &DatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<DatePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: DatePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&DatePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &DatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<DatePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: DatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &DatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<DatePickerAutomationPeer> for AutomationPeer {
    fn from(value: DatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerAutomationPeer> for AutomationPeer {
    fn from(value: &DatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<DatePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: DatePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: &DatePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &DatePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for DatePickerAutomationPeer {}
unsafe impl ::core::marker::Sync for DatePickerAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct DatePickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl DatePickerFlyoutPresenterAutomationPeer {}
impl ::core::clone::Clone for DatePickerFlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for DatePickerFlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for DatePickerFlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for DatePickerFlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DatePickerFlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for DatePickerFlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.DatePickerFlyoutPresenterAutomationPeer;{752aed38-c2bf-4880-82b2-a6c05e90c135})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for DatePickerFlyoutPresenterAutomationPeer {
    type Vtable = IDatePickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IDatePickerFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for DatePickerFlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.DatePickerFlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<DatePickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: DatePickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&DatePickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<DatePickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: DatePickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&DatePickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<DatePickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<DatePickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<DatePickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&DatePickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &DatePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &DatePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for DatePickerFlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for DatePickerFlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct FlipViewAutomationPeer(::windows::core::IUnknown);
impl FlipViewAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlipView>>(owner: Param0) -> ::windows::core::Result<FlipViewAutomationPeer> {
        Self::IFlipViewAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<FlipViewAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlipView>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<FlipViewAutomationPeer> {
        Self::IFlipViewAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<FlipViewAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IFlipViewAutomationPeerFactory<R, F: FnOnce(&IFlipViewAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FlipViewAutomationPeer, IFlipViewAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for FlipViewAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for FlipViewAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for FlipViewAutomationPeer {}
impl ::core::fmt::Debug for FlipViewAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FlipViewAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for FlipViewAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.FlipViewAutomationPeer;{8ec0353a-4284-4b00-aef8-a2688ea5e3c4})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for FlipViewAutomationPeer {
    type Vtable = IFlipViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IFlipViewAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for FlipViewAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.FlipViewAutomationPeer";
}
impl ::core::convert::From<FlipViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: FlipViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: FlipViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<FlipViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: FlipViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&FlipViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &FlipViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<FlipViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: FlipViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&FlipViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &FlipViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for AutomationPeer {
    fn from(value: FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for AutomationPeer {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: FlipViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: &FlipViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &FlipViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for FlipViewAutomationPeer {}
unsafe impl ::core::marker::Sync for FlipViewAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct FlipViewItemAutomationPeer(::windows::core::IUnknown);
impl FlipViewItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlipViewItem>>(owner: Param0) -> ::windows::core::Result<FlipViewItemAutomationPeer> {
        Self::IFlipViewItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<FlipViewItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlipViewItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<FlipViewItemAutomationPeer> {
        Self::IFlipViewItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<FlipViewItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IFlipViewItemAutomationPeerFactory<R, F: FnOnce(&IFlipViewItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FlipViewItemAutomationPeer, IFlipViewItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for FlipViewItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for FlipViewItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for FlipViewItemAutomationPeer {}
impl ::core::fmt::Debug for FlipViewItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FlipViewItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for FlipViewItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.FlipViewItemAutomationPeer;{c83034de-fa08-4bd3-aeb2-d2e5bfa04df9})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for FlipViewItemAutomationPeer {
    type Vtable = IFlipViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IFlipViewItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for FlipViewItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.FlipViewItemAutomationPeer";
}
impl ::core::convert::From<FlipViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: FlipViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &FlipViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlipViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: FlipViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &FlipViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlipViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: FlipViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &FlipViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewItemAutomationPeer> for AutomationPeer {
    fn from(value: FlipViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemAutomationPeer> for AutomationPeer {
    fn from(value: &FlipViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: FlipViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &FlipViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &FlipViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for FlipViewItemAutomationPeer {}
unsafe impl ::core::marker::Sync for FlipViewItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct FlipViewItemDataAutomationPeer(::windows::core::IUnknown);
impl FlipViewItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, FlipViewAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<FlipViewItemDataAutomationPeer> {
        Self::IFlipViewItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<FlipViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, FlipViewAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<FlipViewItemDataAutomationPeer> {
        Self::IFlipViewItemDataAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<FlipViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IFlipViewItemDataAutomationPeerFactory<R, F: FnOnce(&IFlipViewItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FlipViewItemDataAutomationPeer, IFlipViewItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for FlipViewItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for FlipViewItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for FlipViewItemDataAutomationPeer {}
impl ::core::fmt::Debug for FlipViewItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FlipViewItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for FlipViewItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.FlipViewItemDataAutomationPeer;{b0986175-00bc-4118-8a6f-16ee9c15d968})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for FlipViewItemDataAutomationPeer {
    type Vtable = IFlipViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IFlipViewItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for FlipViewItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.FlipViewItemDataAutomationPeer";
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<FlipViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&FlipViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<FlipViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&FlipViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<FlipViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&FlipViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &FlipViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlipViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: FlipViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlipViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &FlipViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &FlipViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for FlipViewItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for FlipViewItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct FlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl FlyoutPresenterAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlyoutPresenter>>(owner: Param0) -> ::windows::core::Result<FlyoutPresenterAutomationPeer> {
        Self::IFlyoutPresenterAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<FlyoutPresenterAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::FlyoutPresenter>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<FlyoutPresenterAutomationPeer> {
        Self::IFlyoutPresenterAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<FlyoutPresenterAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IFlyoutPresenterAutomationPeerFactory<R, F: FnOnce(&IFlyoutPresenterAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FlyoutPresenterAutomationPeer, IFlyoutPresenterAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for FlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for FlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for FlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for FlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for FlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.FlyoutPresenterAutomationPeer;{a01840b4-5fca-456f-98ea-300eb40b585e})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for FlyoutPresenterAutomationPeer {
    type Vtable = IFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for FlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.FlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<FlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: FlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &FlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: FlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &FlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: FlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &FlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: FlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &FlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: FlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &FlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &FlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for FlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for FlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct FrameworkElementAutomationPeer(::windows::core::IUnknown);
impl FrameworkElementAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn Owner(&self) -> ::windows::core::Result<super::super::UIElement> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Owner)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::super::UIElement>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::FrameworkElement>>(owner: Param0) -> ::windows::core::Result<FrameworkElementAutomationPeer> {
        Self::IFrameworkElementAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<FrameworkElementAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::FrameworkElement>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<FrameworkElementAutomationPeer> {
        Self::IFrameworkElementAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<FrameworkElementAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn FromElement<'a, Param0: ::windows::core::IntoParam<'a, super::super::UIElement>>(element: Param0) -> ::windows::core::Result<AutomationPeer> {
        Self::IFrameworkElementAutomationPeerStatics(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).FromElement)(::core::mem::transmute_copy(this), element.into_param().abi(), &mut result__).from_abi::<AutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreatePeerForElement<'a, Param0: ::windows::core::IntoParam<'a, super::super::UIElement>>(element: Param0) -> ::windows::core::Result<AutomationPeer> {
        Self::IFrameworkElementAutomationPeerStatics(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreatePeerForElement)(::core::mem::transmute_copy(this), element.into_param().abi(), &mut result__).from_abi::<AutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IFrameworkElementAutomationPeerFactory<R, F: FnOnce(&IFrameworkElementAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
    #[doc(hidden)]
    pub fn IFrameworkElementAutomationPeerStatics<R, F: FnOnce(&IFrameworkElementAutomationPeerStatics) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<FrameworkElementAutomationPeer, IFrameworkElementAutomationPeerStatics> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for FrameworkElementAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for FrameworkElementAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for FrameworkElementAutomationPeer {}
impl ::core::fmt::Debug for FrameworkElementAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("FrameworkElementAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for FrameworkElementAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer;{b90ad781-bfeb-4451-bd47-9f3a63ebd24a})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for FrameworkElementAutomationPeer {
    type Vtable = IFrameworkElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IFrameworkElementAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for FrameworkElementAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer";
}
impl ::core::convert::From<FrameworkElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: FrameworkElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FrameworkElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &FrameworkElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FrameworkElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: FrameworkElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&FrameworkElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &FrameworkElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<FrameworkElementAutomationPeer> for AutomationPeer {
    fn from(value: FrameworkElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FrameworkElementAutomationPeer> for AutomationPeer {
    fn from(value: &FrameworkElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<FrameworkElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: FrameworkElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&FrameworkElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: &FrameworkElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &FrameworkElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for FrameworkElementAutomationPeer {}
unsafe impl ::core::marker::Sync for FrameworkElementAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct GridViewAutomationPeer(::windows::core::IUnknown);
impl GridViewAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridView>>(owner: Param0) -> ::windows::core::Result<GridViewAutomationPeer> {
        Self::IGridViewAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<GridViewAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridView>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<GridViewAutomationPeer> {
        Self::IGridViewAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<GridViewAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IGridViewAutomationPeerFactory<R, F: FnOnce(&IGridViewAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<GridViewAutomationPeer, IGridViewAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for GridViewAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for GridViewAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for GridViewAutomationPeer {}
impl ::core::fmt::Debug for GridViewAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("GridViewAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for GridViewAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.GridViewAutomationPeer;{1c4401a4-d951-49ca-8f82-c7f3c60681b0})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for GridViewAutomationPeer {
    type Vtable = IGridViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IGridViewAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for GridViewAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.GridViewAutomationPeer";
}
impl ::core::convert::From<GridViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: GridViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: GridViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::core::convert::TryInto::<super::Provider::IDropTargetProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for ListViewBaseAutomationPeer {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for ListViewBaseAutomationPeer {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for AutomationPeer {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for AutomationPeer {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: GridViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: &GridViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &GridViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for GridViewAutomationPeer {}
unsafe impl ::core::marker::Sync for GridViewAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct GridViewHeaderItemAutomationPeer(::windows::core::IUnknown);
impl GridViewHeaderItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridViewHeaderItem>>(owner: Param0) -> ::windows::core::Result<GridViewHeaderItemAutomationPeer> {
        Self::IGridViewHeaderItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<GridViewHeaderItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridViewHeaderItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<GridViewHeaderItemAutomationPeer> {
        Self::IGridViewHeaderItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<GridViewHeaderItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IGridViewHeaderItemAutomationPeerFactory<R, F: FnOnce(&IGridViewHeaderItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<GridViewHeaderItemAutomationPeer, IGridViewHeaderItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for GridViewHeaderItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for GridViewHeaderItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for GridViewHeaderItemAutomationPeer {}
impl ::core::fmt::Debug for GridViewHeaderItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("GridViewHeaderItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for GridViewHeaderItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.GridViewHeaderItemAutomationPeer;{e3dcef3a-e08a-48e7-b23a-2be5b66e474e})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for GridViewHeaderItemAutomationPeer {
    type Vtable = IGridViewHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IGridViewHeaderItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for GridViewHeaderItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.GridViewHeaderItemAutomationPeer";
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseHeaderItemAutomationPeer> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseHeaderItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseHeaderItemAutomationPeer> for &GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseHeaderItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewBaseHeaderItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: GridViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &GridViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &GridViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for GridViewHeaderItemAutomationPeer {}
unsafe impl ::core::marker::Sync for GridViewHeaderItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct GridViewItemAutomationPeer(::windows::core::IUnknown);
impl GridViewItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridViewItem>>(owner: Param0) -> ::windows::core::Result<GridViewItemAutomationPeer> {
        Self::IGridViewItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<GridViewItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GridViewItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<GridViewItemAutomationPeer> {
        Self::IGridViewItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<GridViewItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IGridViewItemAutomationPeerFactory<R, F: FnOnce(&IGridViewItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<GridViewItemAutomationPeer, IGridViewItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for GridViewItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for GridViewItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for GridViewItemAutomationPeer {}
impl ::core::fmt::Debug for GridViewItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("GridViewItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for GridViewItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.GridViewItemAutomationPeer;{93ef2d07-346c-4166-a4ba-bc6a181e7f33})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for GridViewItemAutomationPeer {
    type Vtable = IGridViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IGridViewItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for GridViewItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.GridViewItemAutomationPeer";
}
impl ::core::convert::From<GridViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: GridViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &GridViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: GridViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &GridViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: GridViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &GridViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewItemAutomationPeer> for AutomationPeer {
    fn from(value: GridViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemAutomationPeer> for AutomationPeer {
    fn from(value: &GridViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: GridViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &GridViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &GridViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for GridViewItemAutomationPeer {}
unsafe impl ::core::marker::Sync for GridViewItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct GridViewItemDataAutomationPeer(::windows::core::IUnknown);
impl GridViewItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, GridViewAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<GridViewItemDataAutomationPeer> {
        Self::IGridViewItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<GridViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, GridViewAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<GridViewItemDataAutomationPeer> {
        Self::IGridViewItemDataAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<GridViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IGridViewItemDataAutomationPeerFactory<R, F: FnOnce(&IGridViewItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<GridViewItemDataAutomationPeer, IGridViewItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for GridViewItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for GridViewItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for GridViewItemDataAutomationPeer {}
impl ::core::fmt::Debug for GridViewItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("GridViewItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for GridViewItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.GridViewItemDataAutomationPeer;{f3f4868f-29d4-4094-8c54-ea61a88294a4})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for GridViewItemDataAutomationPeer {
    type Vtable = IGridViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IGridViewItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for GridViewItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.GridViewItemDataAutomationPeer";
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<GridViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&GridViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &GridViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GridViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: GridViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GridViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &GridViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &GridViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for GridViewItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for GridViewItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct GroupItemAutomationPeer(::windows::core::IUnknown);
impl GroupItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GroupItem>>(owner: Param0) -> ::windows::core::Result<GroupItemAutomationPeer> {
        Self::IGroupItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<GroupItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::GroupItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<GroupItemAutomationPeer> {
        Self::IGroupItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<GroupItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IGroupItemAutomationPeerFactory<R, F: FnOnce(&IGroupItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<GroupItemAutomationPeer, IGroupItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for GroupItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for GroupItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for GroupItemAutomationPeer {}
impl ::core::fmt::Debug for GroupItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("GroupItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for GroupItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.GroupItemAutomationPeer;{1914fe6d-0740-4236-9ee1-38cf19c1c388})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for GroupItemAutomationPeer {
    type Vtable = IGroupItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IGroupItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for GroupItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.GroupItemAutomationPeer";
}
impl ::core::convert::From<GroupItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: GroupItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GroupItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &GroupItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GroupItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: GroupItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&GroupItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &GroupItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<GroupItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: GroupItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GroupItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &GroupItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GroupItemAutomationPeer> for AutomationPeer {
    fn from(value: GroupItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GroupItemAutomationPeer> for AutomationPeer {
    fn from(value: &GroupItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<GroupItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: GroupItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&GroupItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &GroupItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &GroupItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for GroupItemAutomationPeer {}
unsafe impl ::core::marker::Sync for GroupItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct HubAutomationPeer(::windows::core::IUnknown);
impl HubAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Hub>>(owner: Param0) -> ::windows::core::Result<HubAutomationPeer> {
        Self::IHubAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<HubAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Hub>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<HubAutomationPeer> {
        Self::IHubAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<HubAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IHubAutomationPeerFactory<R, F: FnOnce(&IHubAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<HubAutomationPeer, IHubAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for HubAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for HubAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for HubAutomationPeer {}
impl ::core::fmt::Debug for HubAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("HubAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for HubAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.HubAutomationPeer;{4ddee056-4ebc-4620-a05d-903e3c9a4ead})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for HubAutomationPeer {
    type Vtable = IHubAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IHubAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for HubAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.HubAutomationPeer";
}
impl ::core::convert::From<HubAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: HubAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HubAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &HubAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<HubAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: HubAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HubAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &HubAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<HubAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: HubAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &HubAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HubAutomationPeer> for AutomationPeer {
    fn from(value: HubAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubAutomationPeer> for AutomationPeer {
    fn from(value: &HubAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HubAutomationPeer> for super::super::DependencyObject {
    fn from(value: HubAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubAutomationPeer> for super::super::DependencyObject {
    fn from(value: &HubAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &HubAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for HubAutomationPeer {}
unsafe impl ::core::marker::Sync for HubAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct HubSectionAutomationPeer(::windows::core::IUnknown);
impl HubSectionAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::HubSection>>(owner: Param0) -> ::windows::core::Result<HubSectionAutomationPeer> {
        Self::IHubSectionAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<HubSectionAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::HubSection>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<HubSectionAutomationPeer> {
        Self::IHubSectionAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<HubSectionAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IHubSectionAutomationPeerFactory<R, F: FnOnce(&IHubSectionAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<HubSectionAutomationPeer, IHubSectionAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for HubSectionAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for HubSectionAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for HubSectionAutomationPeer {}
impl ::core::fmt::Debug for HubSectionAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("HubSectionAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for HubSectionAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.HubSectionAutomationPeer;{16d91ff7-7431-4d82-83ce-cfa3192b0f18})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for HubSectionAutomationPeer {
    type Vtable = IHubSectionAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IHubSectionAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for HubSectionAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.HubSectionAutomationPeer";
}
impl ::core::convert::From<HubSectionAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: HubSectionAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HubSectionAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &HubSectionAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<HubSectionAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: HubSectionAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HubSectionAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &HubSectionAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<HubSectionAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: HubSectionAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&HubSectionAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &HubSectionAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<HubSectionAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: HubSectionAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubSectionAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &HubSectionAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HubSectionAutomationPeer> for AutomationPeer {
    fn from(value: HubSectionAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubSectionAutomationPeer> for AutomationPeer {
    fn from(value: &HubSectionAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HubSectionAutomationPeer> for super::super::DependencyObject {
    fn from(value: HubSectionAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HubSectionAutomationPeer> for super::super::DependencyObject {
    fn from(value: &HubSectionAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &HubSectionAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for HubSectionAutomationPeer {}
unsafe impl ::core::marker::Sync for HubSectionAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct HyperlinkButtonAutomationPeer(::windows::core::IUnknown);
impl HyperlinkButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::HyperlinkButton>>(owner: Param0) -> ::windows::core::Result<HyperlinkButtonAutomationPeer> {
        Self::IHyperlinkButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<HyperlinkButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::HyperlinkButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<HyperlinkButtonAutomationPeer> {
        Self::IHyperlinkButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<HyperlinkButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IHyperlinkButtonAutomationPeerFactory<R, F: FnOnce(&IHyperlinkButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<HyperlinkButtonAutomationPeer, IHyperlinkButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for HyperlinkButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for HyperlinkButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for HyperlinkButtonAutomationPeer {}
impl ::core::fmt::Debug for HyperlinkButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("HyperlinkButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for HyperlinkButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.HyperlinkButtonAutomationPeer;{aa7afcb1-0edf-46d9-aa9e-0eb21d140097})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for HyperlinkButtonAutomationPeer {
    type Vtable = IHyperlinkButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IHyperlinkButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for HyperlinkButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.HyperlinkButtonAutomationPeer";
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<HyperlinkButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: HyperlinkButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&HyperlinkButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &HyperlinkButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for AutomationPeer {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for AutomationPeer {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<HyperlinkButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: HyperlinkButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&HyperlinkButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &HyperlinkButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &HyperlinkButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for HyperlinkButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for HyperlinkButtonAutomationPeer {}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarAutomationPeer {
    type Vtable = IAppBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8b4acfeb_89fa_4f13_84be_35ca5b7c9590);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarAutomationPeerFactory {
    type Vtable = IAppBarAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8360f4e2_e396_4517_af5d_f4cf34c54edf);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarButtonAutomationPeer {
    type Vtable = IAppBarButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x443262b2_4f6d_4b76_9d2e_3eff777e8864);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarButtonAutomationPeerFactory {
    type Vtable = IAppBarButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaef0342a_acb7_42dc_97e3_847071865fd6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarToggleButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarToggleButtonAutomationPeer {
    type Vtable = IAppBarToggleButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8464efad_9655_4aff_9550_63ae9ec8fe9c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarToggleButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAppBarToggleButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAppBarToggleButtonAutomationPeerFactory {
    type Vtable = IAppBarToggleButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd6f9139d_02c1_4221_9591_7d4efeb74701);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppBarToggleButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutoSuggestBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutoSuggestBoxAutomationPeer {
    type Vtable = IAutoSuggestBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2f32c302_f99b_491d_9726_a5e181643efa);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutoSuggestBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutoSuggestBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutoSuggestBoxAutomationPeerFactory {
    type Vtable = IAutoSuggestBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x80046849_18e7_4475_b362_4bbd53d24562);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutoSuggestBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer {
    type Vtable = IAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x35aac87a_62ee_4d3e_a24c_2bc8432d68b7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub EventsSource: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub SetEventsSource: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub GetPattern: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, patterninterface: PatternInterface, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub RaiseAutomationEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventid: AutomationEvents) -> ::windows::core::HRESULT,
    pub RaisePropertyChangedEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, automationproperty: ::windows::core::RawPtr, oldvalue: *mut ::core::ffi::c_void, newvalue: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetAcceleratorKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetAccessKey: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetAutomationControlType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationControlType) -> ::windows::core::HRESULT,
    pub GetAutomationId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetBoundingRectangle: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut super::super::super::super::Foundation::Rect) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetBoundingRectangle: usize,
    #[cfg(feature = "Foundation_Collections")]
    pub GetChildren: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetChildren: usize,
    pub GetClassName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetClickablePoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut super::super::super::super::Foundation::Point) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetClickablePoint: usize,
    pub GetHelpText: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetItemStatus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetItemType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetLabeledBy: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub GetLocalizedControlType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetName: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetOrientation: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationOrientation) -> ::windows::core::HRESULT,
    pub HasKeyboardFocus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsContentElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsControlElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsEnabled: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsKeyboardFocusable: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsOffscreen: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsPassword: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsRequiredForForm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub SetFocus: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "deprecated")]
    pub GetParent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "deprecated"))]
    GetParent: usize,
    pub InvalidatePeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(all(feature = "Foundation", feature = "deprecated"))]
    pub GetPeerFromPoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, point: super::super::super::super::Foundation::Point, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(all(feature = "Foundation", feature = "deprecated")))]
    GetPeerFromPoint: usize,
    pub GetLiveSetting: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationLiveSetting) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer2(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer2 {
    type Vtable = IAutomationPeer2_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xea1f89c7_ebf5_4ab8_88f7_680d821dac61);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer2_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer3(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer3 {
    type Vtable = IAutomationPeer3_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd3cfb977_0084_41d7_a221_28158d3bc32c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer3_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub Navigate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, direction: AutomationNavigationDirection, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetElementFromPoint: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pointinwindowcoordinates: super::super::super::super::Foundation::Point, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetElementFromPoint: usize,
    pub GetFocusedElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ShowContextMenu: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation_Collections")]
    pub GetControlledPeers: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetControlledPeers: usize,
    #[cfg(feature = "Foundation_Collections")]
    pub GetAnnotations: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetAnnotations: usize,
    pub SetParent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, peer: ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation_Collections")]
    pub RaiseTextEditTextChangedEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, automationtexteditchangetype: super::AutomationTextEditChangeType, changeddata: ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    RaiseTextEditTextChangedEvent: usize,
    pub GetPositionInSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
    pub GetSizeOfSet: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
    pub GetLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
    pub RaiseStructureChangedEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, structurechangetype: AutomationStructureChangeType, child: ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer4(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer4 {
    type Vtable = IAutomationPeer4_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x761ce752_73c1_4f44_be75_43c49ec0d4d5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer4_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetLandmarkType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationLandmarkType) -> ::windows::core::HRESULT,
    pub GetLocalizedLandmarkType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer5(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer5 {
    type Vtable = IAutomationPeer5_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf632e1c6_0a3f_4574_9fef_cdc151765674);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer5_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub IsPeripheral: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsDataValidForForm: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub GetFullDescription: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer6(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer6 {
    type Vtable = IAutomationPeer6_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xcaf8608f_13ff_42fb_866d_22206434cc6b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer6_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetCulture: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer7(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer7 {
    type Vtable = IAutomationPeer7_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x796b3287_e642_48ab_b223_5208b41da9d6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer7_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub RaiseNotificationEvent: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, notificationkind: AutomationNotificationKind, notificationprocessing: AutomationNotificationProcessing, displaystring: ::core::mem::ManuallyDrop<::windows::core::HSTRING>, activityid: ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer8(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer8 {
    type Vtable = IAutomationPeer8_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x5c6a1fe6_9a55_4d7f_9498_cfe429e92da8);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer8_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetHeadingLevel: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationHeadingLevel) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeer9(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeer9 {
    type Vtable = IAutomationPeer9_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xdf2e0265_1d74_57fa_8094_f81c2f626b8c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeer9_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub IsDialog: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerAnnotation(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerAnnotation {
    type Vtable = IAutomationPeerAnnotation_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0c456061_52cf_43fa_82f8_07f137351e5a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerAnnotation_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub Type: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut super::AnnotationType) -> ::windows::core::HRESULT,
    pub SetType: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: super::AnnotationType) -> ::windows::core::HRESULT,
    pub Peer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub SetPeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, value: ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerAnnotationFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerAnnotationFactory {
    type Vtable = IAutomationPeerAnnotationFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf59c439e_c65b_43cd_9009_03fc023363a7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerAnnotationFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstance: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: super::AnnotationType, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub CreateWithPeerParameter: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, r#type: super::AnnotationType, peer: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerAnnotationStatics(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerAnnotationStatics {
    type Vtable = IAutomationPeerAnnotationStatics_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8809a87d_09b2_4d45_b78b_1d3b3b09f661);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerAnnotationStatics_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub TypeProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub PeerProperty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerFactory {
    type Vtable = IAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x20c27545_a88b_43c8_bc24_cea9dafd04a3);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstance: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides {
    type Vtable = IAutomationPeerOverrides_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xbea93e67_dbee_4f7b_af0d_a79aae5333bf);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetPatternCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, patterninterface: PatternInterface, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub GetAcceleratorKeyCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetAccessKeyCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetAutomationControlTypeCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationControlType) -> ::windows::core::HRESULT,
    pub GetAutomationIdCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetBoundingRectangleCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut super::super::super::super::Foundation::Rect) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetBoundingRectangleCore: usize,
    #[cfg(feature = "Foundation_Collections")]
    pub GetChildrenCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetChildrenCore: usize,
    pub GetClassNameCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetClickablePointCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut super::super::super::super::Foundation::Point) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetClickablePointCore: usize,
    pub GetHelpTextCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetItemStatusCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetItemTypeCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetLabeledByCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub GetLocalizedControlTypeCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetNameCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    pub GetOrientationCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationOrientation) -> ::windows::core::HRESULT,
    pub HasKeyboardFocusCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsContentElementCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsControlElementCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsEnabledCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsKeyboardFocusableCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsOffscreenCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsPasswordCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsRequiredForFormCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub SetFocusCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetPeerFromPointCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, point: super::super::super::super::Foundation::Point, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetPeerFromPointCore: usize,
    pub GetLiveSettingCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationLiveSetting) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides2(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides2 {
    type Vtable = IAutomationPeerOverrides2_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2603682a_9da6_4023_b496_496e5ef228d2);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides2_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub ShowContextMenuCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation_Collections")]
    pub GetControlledPeersCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetControlledPeersCore: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides3(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides3 {
    type Vtable = IAutomationPeerOverrides3_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb6f0c4ad_4d39_49e6_bb91_d924eefd8538);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides3_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub NavigateCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, direction: AutomationNavigationDirection, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation")]
    pub GetElementFromPointCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pointinwindowcoordinates: super::super::super::super::Foundation::Point, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation"))]
    GetElementFromPointCore: usize,
    pub GetFocusedElementCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation_Collections")]
    pub GetAnnotationsCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetAnnotationsCore: usize,
    pub GetPositionInSetCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
    pub GetSizeOfSetCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
    pub GetLevelCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides4(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides4 {
    type Vtable = IAutomationPeerOverrides4_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb186cda2_5d46_4bcd_a811_269ad15b3aee);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides4_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetLandmarkTypeCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationLandmarkType) -> ::windows::core::HRESULT,
    pub GetLocalizedLandmarkTypeCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides5(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides5 {
    type Vtable = IAutomationPeerOverrides5_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2c847c85_781e_49f7_9fef_b9e14d014707);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides5_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub IsPeripheralCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub IsDataValidForFormCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
    pub GetFullDescriptionCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::core::mem::ManuallyDrop<::windows::core::HSTRING>) -> ::windows::core::HRESULT,
    #[cfg(feature = "Foundation_Collections")]
    pub GetDescribedByCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetDescribedByCore: usize,
    #[cfg(feature = "Foundation_Collections")]
    pub GetFlowsToCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetFlowsToCore: usize,
    #[cfg(feature = "Foundation_Collections")]
    pub GetFlowsFromCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "Foundation_Collections"))]
    GetFlowsFromCore: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides6(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides6 {
    type Vtable = IAutomationPeerOverrides6_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe98babe7_f6ff_444c_9c0d_277eaf0ad9c0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides6_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetCultureCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut i32) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides8(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides8 {
    type Vtable = IAutomationPeerOverrides8_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0e1ebbd4_a003_4936_8175_f5457c07f0c6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides8_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GetHeadingLevelCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut AutomationHeadingLevel) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerOverrides9(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerOverrides9 {
    type Vtable = IAutomationPeerOverrides9_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf3709e8b_091a_5db5_b896_ff78f01990c9);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerOverrides9_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub IsDialogCore: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut bool) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerProtected(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerProtected {
    type Vtable = IAutomationPeerProtected_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf4b40e52_642f_4629_a54a_ea5d2349c448);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerProtected_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub PeerFromProvider: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, provider: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Automation_Provider"))]
    PeerFromProvider: usize,
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub ProviderFromPeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, peer: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Automation_Provider"))]
    ProviderFromPeer: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerStatics(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerStatics {
    type Vtable = IAutomationPeerStatics_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x562f7fb0_a331_4a9c_9dec_bfb7586fffff);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerStatics_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub ListenerExists: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, eventid: AutomationEvents, result__: *mut bool) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IAutomationPeerStatics3(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IAutomationPeerStatics3 {
    type Vtable = IAutomationPeerStatics3_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x572c5714_7f87_4271_819f_6cf4c4d022d0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutomationPeerStatics3_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub GenerateRawElementProviderRuntimeId: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut RawElementProviderRuntimeId) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IButtonAutomationPeer {
    type Vtable = IButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xfb77efbe_39ec_4508_8ac3_51a1424027d7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IButtonAutomationPeerFactory {
    type Vtable = IButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3fdb9f49_f4ab_4780_8644_03376299a175);
}
#[repr(C)]
#[doc(hidden)]
pub struct IButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IButtonBaseAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IButtonBaseAutomationPeer {
    type Vtable = IButtonBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa4f3b5b6_7585_4e0b_96d2_08cf6f28befa);
}
#[repr(C)]
#[doc(hidden)]
pub struct IButtonBaseAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IButtonBaseAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IButtonBaseAutomationPeerFactory {
    type Vtable = IButtonBaseAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8a04091e_e6b2_4c60_a759_c13ca45165ed);
}
#[repr(C)]
#[doc(hidden)]
pub struct IButtonBaseAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICalendarDatePickerAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICalendarDatePickerAutomationPeer {
    type Vtable = ICalendarDatePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x40d8938e_db5e_4b03_beba_d10f62419787);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICalendarDatePickerAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICalendarDatePickerAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICalendarDatePickerAutomationPeerFactory {
    type Vtable = ICalendarDatePickerAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xab705dd2_d293_45bf_9f19_26f7603a5e9b);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICalendarDatePickerAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICaptureElementAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICaptureElementAutomationPeer {
    type Vtable = ICaptureElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xdcc44ee0_fa45_45c6_8bb7_320d808f5958);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICaptureElementAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICaptureElementAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICaptureElementAutomationPeerFactory {
    type Vtable = ICaptureElementAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9b92ef48_85e9_4869_b175_8f7cf45a6d9f);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICaptureElementAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICheckBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICheckBoxAutomationPeer {
    type Vtable = ICheckBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xeb15bc42_c0a9_46c6_ac24_b83de429c733);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICheckBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ICheckBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ICheckBoxAutomationPeerFactory {
    type Vtable = ICheckBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb75c775d_eb8f_44ef_a27c_e26ac7de8333);
}
#[repr(C)]
#[doc(hidden)]
pub struct ICheckBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IColorPickerSliderAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IColorPickerSliderAutomationPeer {
    type Vtable = IColorPickerSliderAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa514215a_7293_4577_924c_47d4e0bf9b90);
}
#[repr(C)]
#[doc(hidden)]
pub struct IColorPickerSliderAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IColorPickerSliderAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IColorPickerSliderAutomationPeerFactory {
    type Vtable = IColorPickerSliderAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1a55c77e_9dd6_45a3_9042_b40200fea1a9);
}
#[repr(C)]
#[doc(hidden)]
pub struct IColorPickerSliderAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IColorSpectrumAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IColorSpectrumAutomationPeer {
    type Vtable = IColorSpectrumAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x15d5ba03_010d_4ff7_9087_f4dd09f831b7);
}
#[repr(C)]
#[doc(hidden)]
pub struct IColorSpectrumAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IColorSpectrumAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IColorSpectrumAutomationPeerFactory {
    type Vtable = IColorSpectrumAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0ac400e1_b743_4496_837a_8889e6ac6497);
}
#[repr(C)]
#[doc(hidden)]
pub struct IColorSpectrumAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxAutomationPeer {
    type Vtable = IComboBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7eb40d0b_75c5_4263_ba6a_d4a54fb0f239);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxAutomationPeerFactory {
    type Vtable = IComboBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x098e5b0d_1b90_40b9_9be3_b23267eb13cf);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxItemAutomationPeer {
    type Vtable = IComboBoxItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x12ddc76e_9552_446a_82ee_938cc371800f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxItemAutomationPeerFactory {
    type Vtable = IComboBoxItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x134ac7fc_397a_403f_a6ec_1ce8beda15e5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxItemDataAutomationPeer {
    type Vtable = IComboBoxItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4fef6df2_289c_4c04_831b_5a668c6d7104);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IComboBoxItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IComboBoxItemDataAutomationPeerFactory {
    type Vtable = IComboBoxItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x14a8d4f6_469a_41ba_9d93_44a1a55da872);
}
#[repr(C)]
#[doc(hidden)]
pub struct IComboBoxItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IDatePickerAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IDatePickerAutomationPeer {
    type Vtable = IDatePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd07d357f_a0b9_45dc_991a_76c505e7d0f5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDatePickerAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IDatePickerAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IDatePickerAutomationPeerFactory {
    type Vtable = IDatePickerAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe5667d19_9157_4436_9f4d_7fb99174b48e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDatePickerAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IDatePickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IDatePickerFlyoutPresenterAutomationPeer {
    type Vtable = IDatePickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x752aed38_c2bf_4880_82b2_a6c05e90c135);
}
#[repr(C)]
#[doc(hidden)]
pub struct IDatePickerFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewAutomationPeer {
    type Vtable = IFlipViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8ec0353a_4284_4b00_aef8_a2688ea5e3c4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewAutomationPeerFactory {
    type Vtable = IFlipViewAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4395ab0d_8d83_483c_88eb_e2617b0d293f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewItemAutomationPeer {
    type Vtable = IFlipViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc83034de_fa08_4bd3_aeb2_d2e5bfa04df9);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewItemAutomationPeerFactory {
    type Vtable = IFlipViewItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x69109356_d0e5_4c10_a09c_ad0bf1b0cb01);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewItemDataAutomationPeer {
    type Vtable = IFlipViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb0986175_00bc_4118_8a6f_16ee9c15d968);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlipViewItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlipViewItemDataAutomationPeerFactory {
    type Vtable = IFlipViewItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3c864393_0aea_4e78_bc11_b775cac4114c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlipViewItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlyoutPresenterAutomationPeer {
    type Vtable = IFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa01840b4_5fca_456f_98ea_300eb40b585e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFlyoutPresenterAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFlyoutPresenterAutomationPeerFactory {
    type Vtable = IFlyoutPresenterAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf350155f_8924_44c0_ba44_653fe79f1efb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFlyoutPresenterAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFrameworkElementAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFrameworkElementAutomationPeer {
    type Vtable = IFrameworkElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb90ad781_bfeb_4451_bd47_9f3a63ebd24a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFrameworkElementAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub Owner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFrameworkElementAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFrameworkElementAutomationPeerFactory {
    type Vtable = IFrameworkElementAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0db9b8bc_b812_48e3_af1f_dbc57600c325);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFrameworkElementAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IFrameworkElementAutomationPeerStatics(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IFrameworkElementAutomationPeerStatics {
    type Vtable = IFrameworkElementAutomationPeerStatics_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb9c0b997_2820_44a1_a5a8_9b801edc269e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IFrameworkElementAutomationPeerStatics_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub FromElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, element: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    pub CreatePeerForElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, element: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewAutomationPeer {
    type Vtable = IGridViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1c4401a4_d951_49ca_8f82_c7f3c60681b0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewAutomationPeerFactory {
    type Vtable = IGridViewAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8aca59dd_22a7_4800_894b_c1f485f38953);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewHeaderItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewHeaderItemAutomationPeer {
    type Vtable = IGridViewHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe3dcef3a_e08a_48e7_b23a_2be5b66e474e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewHeaderItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewHeaderItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewHeaderItemAutomationPeerFactory {
    type Vtable = IGridViewHeaderItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2c80b4d2_ffc2_4157_88dd_59cd92e39715);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewHeaderItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewItemAutomationPeer {
    type Vtable = IGridViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x93ef2d07_346c_4166_a4ba_bc6a181e7f33);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewItemAutomationPeerFactory {
    type Vtable = IGridViewItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xfafec376_f22e_466d_913c_ae24ccdb160f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewItemDataAutomationPeer {
    type Vtable = IGridViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf3f4868f_29d4_4094_8c54_ea61a88294a4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGridViewItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGridViewItemDataAutomationPeerFactory {
    type Vtable = IGridViewItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa65e7a88_770d_402c_996f_67506af2a4af);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGridViewItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGroupItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGroupItemAutomationPeer {
    type Vtable = IGroupItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1914fe6d_0740_4236_9ee1_38cf19c1c388);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGroupItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IGroupItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IGroupItemAutomationPeerFactory {
    type Vtable = IGroupItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x56a64567_f21c_4c90_b379_15a27c7f8409);
}
#[repr(C)]
#[doc(hidden)]
pub struct IGroupItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHubAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHubAutomationPeer {
    type Vtable = IHubAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4ddee056_4ebc_4620_a05d_903e3c9a4ead);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHubAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHubAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHubAutomationPeerFactory {
    type Vtable = IHubAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc762d43f_79dd_43ee_8777_8d08b39aa065);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHubAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHubSectionAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHubSectionAutomationPeer {
    type Vtable = IHubSectionAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x16d91ff7_7431_4d82_83ce_cfa3192b0f18);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHubSectionAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHubSectionAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHubSectionAutomationPeerFactory {
    type Vtable = IHubSectionAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc68e27e8_17ec_4329_91ae_2d0b2339d498);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHubSectionAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHyperlinkButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHyperlinkButtonAutomationPeer {
    type Vtable = IHyperlinkButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xaa7afcb1_0edf_46d9_aa9e_0eb21d140097);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHyperlinkButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IHyperlinkButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IHyperlinkButtonAutomationPeerFactory {
    type Vtable = IHyperlinkButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x59bc1661_c182_49af_9526_44b88e628455);
}
#[repr(C)]
#[doc(hidden)]
pub struct IHyperlinkButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IImageAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IImageAutomationPeer {
    type Vtable = IImageAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x9b0bbf8c_60a2_48bf_ab2c_1a52a451d2d4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IImageAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IImageAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IImageAutomationPeerFactory {
    type Vtable = IImageAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x90304003_687d_47bf_b3a2_4babcad8ef50);
}
#[repr(C)]
#[doc(hidden)]
pub struct IImageAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IInkToolbarAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IInkToolbarAutomationPeer {
    type Vtable = IInkToolbarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x123baaa4_f2e8_4bcb_9382_5dfdd11fe45f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IInkToolbarAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemAutomationPeer {
    type Vtable = IItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x953c34f6_3b31_47a7_b3bf_25d3ae99c317);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub Item: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
    pub ItemsControlAutomationPeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemAutomationPeerFactory {
    type Vtable = IItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x29065073_de3d_4d3f_97b4_4d6f9d53444d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemsControlAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemsControlAutomationPeer {
    type Vtable = IItemsControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x96e76bf1_37f7_4088_925d_65268e83e34d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemsControlAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemsControlAutomationPeer2(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemsControlAutomationPeer2 {
    type Vtable = IItemsControlAutomationPeer2_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc48d8917_95a8_47b8_a517_bf891a6c039b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemsControlAutomationPeer2_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateItemAutomationPeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemsControlAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemsControlAutomationPeerFactory {
    type Vtable = IItemsControlAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4038a259_2e1a_49ca_a533_c64f181577e6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemsControlAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IItemsControlAutomationPeerOverrides2(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IItemsControlAutomationPeerOverrides2 {
    type Vtable = IItemsControlAutomationPeerOverrides2_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x361dc0e8_b56f_45e9_80fe_10a0fb0fe177);
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemsControlAutomationPeerOverrides2_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub OnCreateItemAutomationPeer: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxAutomationPeer {
    type Vtable = IListBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8cd0d608_b402_4a6e_bd9a_343f8845eb32);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxAutomationPeerFactory {
    type Vtable = IListBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe2362185_7df6_49f7_8abc_4c33f1a3d46e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxItemAutomationPeer {
    type Vtable = IListBoxItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1bc6e1c6_2997_42df_99eb_92bc1dd149fb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxItemAutomationPeerFactory {
    type Vtable = IListBoxItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x509f9dd8_b0aa_443f_a110_41209af44f1c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxItemDataAutomationPeer {
    type Vtable = IListBoxItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xfd7d5fee_fde0_482a_8084_dcebba5b9806);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListBoxItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListBoxItemDataAutomationPeerFactory {
    type Vtable = IListBoxItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd7924e16_bd8d_4662_a995_20ff9a056093);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListBoxItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListPickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListPickerFlyoutPresenterAutomationPeer {
    type Vtable = IListPickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x56dfdc58_2395_4060_8047_8ea463698a24);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListPickerFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewAutomationPeer {
    type Vtable = IListViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x73cecc87_c0dc_4260_9148_75e9864a7230);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewAutomationPeerFactory {
    type Vtable = IListViewAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x65f39174_eaa2_4e44_8be6_4cca28cd0288);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewBaseAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewBaseAutomationPeer {
    type Vtable = IListViewBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x87ec7649_b83d_4e55_9afd_bd835e748f5c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewBaseAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewBaseAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewBaseAutomationPeerFactory {
    type Vtable = IListViewBaseAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x70d3c2be_8950_4647_9362_fd002f8ff82e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewBaseAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewBaseHeaderItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewBaseHeaderItemAutomationPeer {
    type Vtable = IListViewBaseHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7cb8b732_c1f0_4a3c_bc14_85dd48dedb85);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewBaseHeaderItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewBaseHeaderItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewBaseHeaderItemAutomationPeerFactory {
    type Vtable = IListViewBaseHeaderItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x40ec995f_d631_4004_832e_6d8643e51561);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewBaseHeaderItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewHeaderItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewHeaderItemAutomationPeer {
    type Vtable = IListViewHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x67ab1e4b_ad61_4c88_ba45_0f3a8d061f8f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewHeaderItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewHeaderItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewHeaderItemAutomationPeerFactory {
    type Vtable = IListViewHeaderItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x07668694_2ca5_4be4_a8b9_592d48f76087);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewHeaderItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewItemAutomationPeer {
    type Vtable = IListViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xca114e70_a16d_4d09_a1cf_1856ef98a9ec);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewItemAutomationPeerFactory {
    type Vtable = IListViewItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc47dfbc0_facc_4024_a73b_17ec4e662654);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewItemDataAutomationPeer {
    type Vtable = IListViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x15a8d7fd_d7a5_4a6c_963c_6f7ce464671a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IListViewItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IListViewItemDataAutomationPeerFactory {
    type Vtable = IListViewItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd0db12bb_d715_4523_acc0_1e1072d8e32b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IListViewItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ILoopingSelectorAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ILoopingSelectorAutomationPeer {
    type Vtable = ILoopingSelectorAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x50b406ca_bae9_4816_8a3a_0cb4f96478a2);
}
#[repr(C)]
#[doc(hidden)]
pub struct ILoopingSelectorAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ILoopingSelectorItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ILoopingSelectorItemAutomationPeer {
    type Vtable = ILoopingSelectorItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd3fa68bf_04cf_4f4c_8d3e_4780a19d4788);
}
#[repr(C)]
#[doc(hidden)]
pub struct ILoopingSelectorItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ILoopingSelectorItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ILoopingSelectorItemDataAutomationPeer {
    type Vtable = ILoopingSelectorItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xef567e32_7cd2_4d32_9590_1f588d5ef38d);
}
#[repr(C)]
#[doc(hidden)]
pub struct ILoopingSelectorItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMapControlAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMapControlAutomationPeer {
    type Vtable = IMapControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x425beee4_f2e8_4bcb_9382_5dfdd11fe45f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMapControlAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaElementAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaElementAutomationPeer {
    type Vtable = IMediaElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xba0b9fc2_a6e2_41a5_b17a_d1594613efba);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaElementAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaElementAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaElementAutomationPeerFactory {
    type Vtable = IMediaElementAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb2ad3b28_7575_4173_9bc7_80367a164ed2);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaElementAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaPlayerElementAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaPlayerElementAutomationPeer {
    type Vtable = IMediaPlayerElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x02bed209_3f65_4fdd_b5ca_c4750d4e6ea4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaPlayerElementAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaPlayerElementAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaPlayerElementAutomationPeerFactory {
    type Vtable = IMediaPlayerElementAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x08848077_82af_4d19_b170_282a9e0e7f37);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaPlayerElementAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaTransportControlsAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaTransportControlsAutomationPeer {
    type Vtable = IMediaTransportControlsAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa3ad8d93_79f8_4958_a3c8_980defb83d15);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaTransportControlsAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMediaTransportControlsAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMediaTransportControlsAutomationPeerFactory {
    type Vtable = IMediaTransportControlsAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf41cb003_e103_4ab0_812a_a08fbdb570ce);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMediaTransportControlsAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuBarAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuBarAutomationPeer {
    type Vtable = IMenuBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4b6adcf1_f274_5592_85a8_7b099e99b320);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuBarAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuBarAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuBarAutomationPeerFactory {
    type Vtable = IMenuBarAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2a094871_4a9b_5a0b_9fda_7bc3ae957c53);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuBarAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstance: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstance: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuBarItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuBarItemAutomationPeer {
    type Vtable = IMenuBarItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0fce49b4_cff5_5c4b_98ee_e75fdddf799a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuBarItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuBarItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuBarItemAutomationPeerFactory {
    type Vtable = IMenuBarItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc9c77746_130f_5b19_83a6_61db584613aa);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuBarItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstance: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstance: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuFlyoutItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuFlyoutItemAutomationPeer {
    type Vtable = IMenuFlyoutItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1fc19462_21df_456e_aa11_8fac6b4b2af6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuFlyoutItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuFlyoutItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuFlyoutItemAutomationPeerFactory {
    type Vtable = IMenuFlyoutItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd08bfcb8_20d1_45d8_a2c2_2f130df714e0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuFlyoutItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuFlyoutPresenterAutomationPeer {
    type Vtable = IMenuFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe244a871_fcbb_48fc_8a93_41ea134b53ce);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IMenuFlyoutPresenterAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IMenuFlyoutPresenterAutomationPeerFactory {
    type Vtable = IMenuFlyoutPresenterAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x07b5172d_761d_452b_9e6d_fa2a8be0ad26);
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuFlyoutPresenterAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct INavigationViewItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for INavigationViewItemAutomationPeer {
    type Vtable = INavigationViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x309847a5_9971_4d8d_a81c_085c7086a1b9);
}
#[repr(C)]
#[doc(hidden)]
pub struct INavigationViewItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct INavigationViewItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for INavigationViewItemAutomationPeerFactory {
    type Vtable = INavigationViewItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0bc2835d_aa38_4f97_9664_e6fc821d81ed);
}
#[repr(C)]
#[doc(hidden)]
pub struct INavigationViewItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPasswordBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPasswordBoxAutomationPeer {
    type Vtable = IPasswordBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x684f065e_3df3_4b9f_82ad_8819db3b218a);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPasswordBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPasswordBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPasswordBoxAutomationPeerFactory {
    type Vtable = IPasswordBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xac3d7ede_dca4_481c_b520_4a9b3f3b179c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPasswordBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPersonPictureAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPersonPictureAutomationPeer {
    type Vtable = IPersonPictureAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x27156d4c_a66f_4aaf_8286_4f796d30628c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPersonPictureAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPersonPictureAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPersonPictureAutomationPeerFactory {
    type Vtable = IPersonPictureAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa95f1f6d_2524_44a4_97fd_1181130100ad);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPersonPictureAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPickerFlyoutPresenterAutomationPeer {
    type Vtable = IPickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x28414bf7_8382_4eae_93c1_d6f035aa8155);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPickerFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotAutomationPeer {
    type Vtable = IPivotAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe715a8f8_3b9d_402c_81e2_6e912ef58981);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotAutomationPeerFactory {
    type Vtable = IPivotAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3efe0f94_0c91_4341_b9ac_1b56b4e6b84f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotItemAutomationPeer {
    type Vtable = IPivotItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x1a4241ad_5d55_4d27_b40f_2d37506fbe78);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotItemAutomationPeerFactory {
    type Vtable = IPivotItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf2810471_183f_416b_b41a_1e5a958a91f4);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotItemDataAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotItemDataAutomationPeer {
    type Vtable = IPivotItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa2a3b788_ea1d_48b7_88ee_f08b6aa07fee);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotItemDataAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IPivotItemDataAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IPivotItemDataAutomationPeerFactory {
    type Vtable = IPivotItemDataAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x517a2480_d3b6_412e_82b6_94a0a84c13b0);
}
#[repr(C)]
#[doc(hidden)]
pub struct IPivotItemDataAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IProgressBarAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IProgressBarAutomationPeer {
    type Vtable = IProgressBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x93f48f86_d840_4fb6_ac2f_5f779b854b0d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IProgressBarAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IProgressBarAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IProgressBarAutomationPeerFactory {
    type Vtable = IProgressBarAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x364679ab_b80f_41b4_8eea_2f5251bc739c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IProgressBarAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IProgressRingAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IProgressRingAutomationPeer {
    type Vtable = IProgressRingAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xbc305eee_39d3_4eeb_ac33_2394de123e2e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IProgressRingAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IProgressRingAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IProgressRingAutomationPeerFactory {
    type Vtable = IProgressRingAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf3db204b_157e_40bc_9593_55bc5c71a4f6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IProgressRingAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRadioButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRadioButtonAutomationPeer {
    type Vtable = IRadioButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7e6a5ed8_0b30_4743_b102_dcdf548e3131);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRadioButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRadioButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRadioButtonAutomationPeerFactory {
    type Vtable = IRadioButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x4940c4fd_3d88_49ca_8f31_924187af0bfe);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRadioButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRangeBaseAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRangeBaseAutomationPeer {
    type Vtable = IRangeBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe454b549_4b2c_42ad_b04b_d35947d1ee50);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRangeBaseAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRangeBaseAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRangeBaseAutomationPeerFactory {
    type Vtable = IRangeBaseAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x827c7601_3078_4479_95ea_91374ca06207);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRangeBaseAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRatingControlAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRatingControlAutomationPeer {
    type Vtable = IRatingControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3d14349a_9963_4a47_823c_f457cb3209d5);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRatingControlAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRatingControlAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRatingControlAutomationPeerFactory {
    type Vtable = IRatingControlAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf179f272_9846_4632_8b9c_be6fa8d3c9bb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRatingControlAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRepeatButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRepeatButtonAutomationPeer {
    type Vtable = IRepeatButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x29e41ad5_a8ac_4e8a_83d8_09e37e054257);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRepeatButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRepeatButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRepeatButtonAutomationPeerFactory {
    type Vtable = IRepeatButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6a6ff9d4_575e_4e60_bdd6_ec14419b4ff6);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRepeatButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichEditBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichEditBoxAutomationPeer {
    type Vtable = IRichEditBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc69f5c04_16ee_467a_a833_c3da8458ad64);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichEditBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichEditBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichEditBoxAutomationPeerFactory {
    type Vtable = IRichEditBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x752c8399_d296_4d87_9020_a4750e885b3c);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichEditBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichTextBlockAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichTextBlockAutomationPeer {
    type Vtable = IRichTextBlockAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x93a01a9c_9609_41fa_82f3_909c09f49a72);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichTextBlockAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichTextBlockAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichTextBlockAutomationPeerFactory {
    type Vtable = IRichTextBlockAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2038ae61_1389_467a_aed6_37334da9622b);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichTextBlockAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichTextBlockOverflowAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichTextBlockOverflowAutomationPeer {
    type Vtable = IRichTextBlockOverflowAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x8c9a409a_2736_437b_ab36_a16a202f105d);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichTextBlockOverflowAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IRichTextBlockOverflowAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IRichTextBlockOverflowAutomationPeerFactory {
    type Vtable = IRichTextBlockOverflowAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xbd5eb663_2c14_4665_adef_f2b033947beb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IRichTextBlockOverflowAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IScrollBarAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IScrollBarAutomationPeer {
    type Vtable = IScrollBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x69e0c369_bbe7_41f2_87ca_aad813fe550e);
}
#[repr(C)]
#[doc(hidden)]
pub struct IScrollBarAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IScrollBarAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IScrollBarAutomationPeerFactory {
    type Vtable = IScrollBarAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xe1302110_afeb_4595_8e3d_edc0844a2b21);
}
#[repr(C)]
#[doc(hidden)]
pub struct IScrollBarAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IScrollViewerAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IScrollViewerAutomationPeer {
    type Vtable = IScrollViewerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd985f259_1b09_4e88_88fd_421750dc6b45);
}
#[repr(C)]
#[doc(hidden)]
pub struct IScrollViewerAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IScrollViewerAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IScrollViewerAutomationPeerFactory {
    type Vtable = IScrollViewerAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x270dff7d_d96d_48f9_a36a_c252aa9c4670);
}
#[repr(C)]
#[doc(hidden)]
pub struct IScrollViewerAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISearchBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISearchBoxAutomationPeer {
    type Vtable = ISearchBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x854011a4_18a6_4f30_939b_8871afa3f5e9);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISearchBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISearchBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISearchBoxAutomationPeerFactory {
    type Vtable = ISearchBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xb3c01430_7faa_41bb_8e91_7c761c5267f1);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISearchBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISelectorAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISelectorAutomationPeer {
    type Vtable = ISelectorAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x162ac829_7115_43ec_b383_a7b71644069d);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISelectorAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISelectorAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISelectorAutomationPeerFactory {
    type Vtable = ISelectorAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x7b525646_829b_4dcc_bd52_5a8d0399387a);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISelectorAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISelectorItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISelectorItemAutomationPeer {
    type Vtable = ISelectorItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xae8b3477_860a_45bb_bf7c_e1b27419d1dd);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISelectorItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISelectorItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISelectorItemAutomationPeerFactory {
    type Vtable = ISelectorItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x66d7edfb_786d_4362_a964_ebfb21776c30);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISelectorItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    pub CreateInstanceWithParentAndItem: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, item: *mut ::core::ffi::c_void, parent: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISemanticZoomAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISemanticZoomAutomationPeer {
    type Vtable = ISemanticZoomAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3c2fac6c_a977_47fc_b44e_2754c0b2bea9);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISemanticZoomAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISemanticZoomAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISemanticZoomAutomationPeerFactory {
    type Vtable = ISemanticZoomAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf518d44d_a493_4496_b077_9674c7f4c5fa);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISemanticZoomAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISettingsFlyoutAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISettingsFlyoutAutomationPeer {
    type Vtable = ISettingsFlyoutAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xd0de0cdb_30cf_47a6_a5eb_9c77f0b0d6dd);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISettingsFlyoutAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISettingsFlyoutAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISettingsFlyoutAutomationPeerFactory {
    type Vtable = ISettingsFlyoutAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xf94762bd_8a14_40e4_94a7_3f33c922e945);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISettingsFlyoutAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISliderAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISliderAutomationPeer {
    type Vtable = ISliderAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xec30015a_d611_46d0_ae4f_6ecf27dfbaa5);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISliderAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ISliderAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ISliderAutomationPeerFactory {
    type Vtable = ISliderAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x971b8056_9a7a_4df9_95fa_6f5c04c91cac);
}
#[repr(C)]
#[doc(hidden)]
pub struct ISliderAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITextBlockAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITextBlockAutomationPeer {
    type Vtable = ITextBlockAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xbe2057f5_6715_4e69_a050_92bd0ce232a9);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITextBlockAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITextBlockAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITextBlockAutomationPeerFactory {
    type Vtable = ITextBlockAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x76bf924b_7ca0_4b01_bc5c_a8cf4d3691de);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITextBlockAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITextBoxAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITextBoxAutomationPeer {
    type Vtable = ITextBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x3a4f1ca0_5e5d_4d26_9067_e740bf657a9f);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITextBoxAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITextBoxAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITextBoxAutomationPeerFactory {
    type Vtable = ITextBoxAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x01f0c067_966b_4130_b872_469e42bd4a7f);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITextBoxAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IThumbAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IThumbAutomationPeer {
    type Vtable = IThumbAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xdc2949b5_b45e_4d6d_892f_d9422c950efb);
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IThumbAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IThumbAutomationPeerFactory {
    type Vtable = IThumbAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x970743ff_af41_4600_b55d_26d43df860e1);
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITimePickerAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITimePickerAutomationPeer {
    type Vtable = ITimePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xa43d44ef_3285_4df7_b4a4_e4cdf36a3a17);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITimePickerAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITimePickerAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITimePickerAutomationPeerFactory {
    type Vtable = ITimePickerAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x978f6671_47f8_40a7_9e21_68128b16b4fd);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITimePickerAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITimePickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITimePickerFlyoutPresenterAutomationPeer {
    type Vtable = ITimePickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xda93ee27_82f1_4701_8706_be297bf06043);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITimePickerFlyoutPresenterAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleButtonAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleButtonAutomationPeer {
    type Vtable = IToggleButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x62dbe6c5_bc0a_45bb_bf77_ea0f1502891f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleButtonAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleButtonAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleButtonAutomationPeerFactory {
    type Vtable = IToggleButtonAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc9218cc4_ad4b_4d03_a6a4_7d59e6360004);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleButtonAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls_Primitives"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleMenuFlyoutItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleMenuFlyoutItemAutomationPeer {
    type Vtable = IToggleMenuFlyoutItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x6b57eafe_6af1_4903_8373_3437bf352345);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleMenuFlyoutItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleMenuFlyoutItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleMenuFlyoutItemAutomationPeerFactory {
    type Vtable = IToggleMenuFlyoutItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x94364b77_8f6c_4837_aae3_94d010d8d162);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleMenuFlyoutItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleSwitchAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleSwitchAutomationPeer {
    type Vtable = IToggleSwitchAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0xc011f174_e89e_4790_bf9a_78ebb5f59e9f);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleSwitchAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct IToggleSwitchAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for IToggleSwitchAutomationPeerFactory {
    type Vtable = IToggleSwitchAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x31f933e3_fef8_4419_9df5_d9ef7196ea34);
}
#[repr(C)]
#[doc(hidden)]
pub struct IToggleSwitchAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITreeViewItemAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITreeViewItemAutomationPeer {
    type Vtable = ITreeViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x2331d648_b617_437f_920c_71d450503e65);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITreeViewItemAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITreeViewItemAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITreeViewItemAutomationPeerFactory {
    type Vtable = ITreeViewItemAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x73d388bf_1d01_4159_82c0_2b2996dbfdce);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITreeViewItemAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITreeViewListAutomationPeer(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITreeViewListAutomationPeer {
    type Vtable = ITreeViewListAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x71c1b5bc_bb29_4479_a8a8_606be6b823ae);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITreeViewListAutomationPeer_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
}
#[doc(hidden)]
#[repr(transparent)]
pub struct ITreeViewListAutomationPeerFactory(::windows::core::IUnknown);
unsafe impl ::windows::core::Interface for ITreeViewListAutomationPeerFactory {
    type Vtable = ITreeViewListAutomationPeerFactory_Vtbl;
    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x00f597e2_f811_475a_bfe6_290fe707fa88);
}
#[repr(C)]
#[doc(hidden)]
pub struct ITreeViewListAutomationPeerFactory_Vtbl {
    pub base: ::windows::core::IInspectableVtbl,
    #[cfg(feature = "UI_Xaml_Controls")]
    pub CreateInstanceWithOwner: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, owner: ::windows::core::RawPtr, baseinterface: *mut ::core::ffi::c_void, innerinterface: *mut *mut ::core::ffi::c_void, result__: *mut ::windows::core::RawPtr) -> ::windows::core::HRESULT,
    #[cfg(not(feature = "UI_Xaml_Controls"))]
    CreateInstanceWithOwner: usize,
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ImageAutomationPeer(::windows::core::IUnknown);
impl ImageAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Image>>(owner: Param0) -> ::windows::core::Result<ImageAutomationPeer> {
        Self::IImageAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ImageAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Image>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ImageAutomationPeer> {
        Self::IImageAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ImageAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IImageAutomationPeerFactory<R, F: FnOnce(&IImageAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ImageAutomationPeer, IImageAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ImageAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ImageAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ImageAutomationPeer {}
impl ::core::fmt::Debug for ImageAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ImageAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ImageAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ImageAutomationPeer;{9b0bbf8c-60a2-48bf-ab2c-1a52a451d2d4})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ImageAutomationPeer {
    type Vtable = IImageAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IImageAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ImageAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ImageAutomationPeer";
}
impl ::core::convert::From<ImageAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ImageAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ImageAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ImageAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ImageAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ImageAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ImageAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ImageAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ImageAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ImageAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ImageAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ImageAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ImageAutomationPeer> for AutomationPeer {
    fn from(value: ImageAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ImageAutomationPeer> for AutomationPeer {
    fn from(value: &ImageAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ImageAutomationPeer> for super::super::DependencyObject {
    fn from(value: ImageAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ImageAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ImageAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ImageAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ImageAutomationPeer {}
unsafe impl ::core::marker::Sync for ImageAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct InkToolbarAutomationPeer(::windows::core::IUnknown);
impl InkToolbarAutomationPeer {}
impl ::core::clone::Clone for InkToolbarAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for InkToolbarAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for InkToolbarAutomationPeer {}
impl ::core::fmt::Debug for InkToolbarAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("InkToolbarAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for InkToolbarAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.InkToolbarAutomationPeer;{123baaa4-f2e8-4bcb-9382-5dfdd11fe45f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for InkToolbarAutomationPeer {
    type Vtable = IInkToolbarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IInkToolbarAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for InkToolbarAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.InkToolbarAutomationPeer";
}
impl ::core::convert::From<InkToolbarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: InkToolbarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&InkToolbarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &InkToolbarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<InkToolbarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: InkToolbarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&InkToolbarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &InkToolbarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<InkToolbarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: InkToolbarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&InkToolbarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &InkToolbarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<InkToolbarAutomationPeer> for AutomationPeer {
    fn from(value: InkToolbarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&InkToolbarAutomationPeer> for AutomationPeer {
    fn from(value: &InkToolbarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<InkToolbarAutomationPeer> for super::super::DependencyObject {
    fn from(value: InkToolbarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&InkToolbarAutomationPeer> for super::super::DependencyObject {
    fn from(value: &InkToolbarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &InkToolbarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for InkToolbarAutomationPeer {}
unsafe impl ::core::marker::Sync for InkToolbarAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ItemAutomationPeer(::windows::core::IUnknown);
impl ItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn Item(&self) -> ::windows::core::Result<::windows::core::IInspectable> {
        let this = self;
        unsafe {
            let mut result__: *mut ::core::ffi::c_void = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Item)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::IInspectable>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn ItemsControlAutomationPeer(&self) -> ::windows::core::Result<ItemsControlAutomationPeer> {
        let this = self;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ItemsControlAutomationPeer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<ItemsControlAutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ItemsControlAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<ItemAutomationPeer> {
        Self::IItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ItemsControlAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<ItemAutomationPeer> {
        Self::IItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Realize(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IVirtualizedItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Realize)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IItemAutomationPeerFactory<R, F: FnOnce(&IItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ItemAutomationPeer, IItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ItemAutomationPeer {}
impl ::core::fmt::Debug for ItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ItemAutomationPeer;{953c34f6-3b31-47a7-b3bf-25d3ae99c317})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ItemAutomationPeer {
    type Vtable = IItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ItemAutomationPeer";
}
impl ::core::convert::From<ItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ItemAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ItemAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ItemAutomationPeer> for AutomationPeer {
    fn from(value: ItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ItemAutomationPeer> for AutomationPeer {
    fn from(value: &ItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ItemsControlAutomationPeer(::windows::core::IUnknown);
impl ItemsControlAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn FindItemByProperty<'a, Param0: ::windows::core::IntoParam<'a, super::Provider::IRawElementProviderSimple>, Param1: ::windows::core::IntoParam<'a, super::AutomationProperty>, Param2: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>>(&self, startafter: Param0, automationproperty: Param1, value: Param2) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::IItemContainerProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).FindItemByProperty)(::core::mem::transmute_copy(this), startafter.into_param().abi(), automationproperty.into_param().abi(), value.into_param().abi(), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateItemAutomationPeer<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>>(&self, item: Param0) -> ::windows::core::Result<ItemAutomationPeer> {
        let this = &::windows::core::Interface::cast::<IItemsControlAutomationPeer2>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateItemAutomationPeer)(::core::mem::transmute_copy(this), item.into_param().abi(), &mut result__).from_abi::<ItemAutomationPeer>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ItemsControl>>(owner: Param0) -> ::windows::core::Result<ItemsControlAutomationPeer> {
        Self::IItemsControlAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ItemsControlAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ItemsControl>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ItemsControlAutomationPeer> {
        Self::IItemsControlAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ItemsControlAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IItemsControlAutomationPeerFactory<R, F: FnOnce(&IItemsControlAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ItemsControlAutomationPeer, IItemsControlAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ItemsControlAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ItemsControlAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ItemsControlAutomationPeer {}
impl ::core::fmt::Debug for ItemsControlAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ItemsControlAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ItemsControlAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ItemsControlAutomationPeer;{96e76bf1-37f7-4088-925d-65268e83e34d})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ItemsControlAutomationPeer {
    type Vtable = IItemsControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IItemsControlAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ItemsControlAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ItemsControlAutomationPeer";
}
impl ::core::convert::From<ItemsControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ItemsControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ItemsControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ItemsControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ItemsControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ItemsControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ItemsControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ItemsControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ItemsControlAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ItemsControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ItemsControlAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ItemsControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ItemsControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ItemsControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ItemsControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ItemsControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ItemsControlAutomationPeer> for AutomationPeer {
    fn from(value: ItemsControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ItemsControlAutomationPeer> for AutomationPeer {
    fn from(value: &ItemsControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ItemsControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: ItemsControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ItemsControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ItemsControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ItemsControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ItemsControlAutomationPeer {}
unsafe impl ::core::marker::Sync for ItemsControlAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListBoxAutomationPeer(::windows::core::IUnknown);
impl ListBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListBox>>(owner: Param0) -> ::windows::core::Result<ListBoxAutomationPeer> {
        Self::IListBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListBoxAutomationPeer> {
        Self::IListBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListBoxAutomationPeerFactory<R, F: FnOnce(&IListBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListBoxAutomationPeer, IListBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListBoxAutomationPeer {}
impl ::core::fmt::Debug for ListBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListBoxAutomationPeer;{8cd0d608-b402-4a6e-bd9a-343f8845eb32})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListBoxAutomationPeer {
    type Vtable = IListBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListBoxAutomationPeer";
}
impl ::core::convert::From<ListBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListBoxAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListBoxAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListBoxAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListBoxAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListBoxAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for SelectorAutomationPeer {
    fn from(value: ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for AutomationPeer {
    fn from(value: ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for AutomationPeer {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for ListBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListBoxItemAutomationPeer(::windows::core::IUnknown);
impl ListBoxItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListBoxItem>>(owner: Param0) -> ::windows::core::Result<ListBoxItemAutomationPeer> {
        Self::IListBoxItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListBoxItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListBoxItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListBoxItemAutomationPeer> {
        Self::IListBoxItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListBoxItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListBoxItemAutomationPeerFactory<R, F: FnOnce(&IListBoxItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListBoxItemAutomationPeer, IListBoxItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListBoxItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListBoxItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListBoxItemAutomationPeer {}
impl ::core::fmt::Debug for ListBoxItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListBoxItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListBoxItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListBoxItemAutomationPeer;{1bc6e1c6-2997-42df-99eb-92bc1dd149fb})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListBoxItemAutomationPeer {
    type Vtable = IListBoxItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListBoxItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListBoxItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListBoxItemAutomationPeer";
}
impl ::core::convert::From<ListBoxItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListBoxItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListBoxItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListBoxItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListBoxItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxItemAutomationPeer> for AutomationPeer {
    fn from(value: ListBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemAutomationPeer> for AutomationPeer {
    fn from(value: &ListBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListBoxItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListBoxItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListBoxItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListBoxItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ListBoxItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListBoxItemDataAutomationPeer(::windows::core::IUnknown);
impl ListBoxItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ListBoxAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<ListBoxItemDataAutomationPeer> {
        Self::IListBoxItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListBoxItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ListBoxAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<ListBoxItemDataAutomationPeer> {
        Self::IListBoxItemDataAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListBoxItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IListBoxItemDataAutomationPeerFactory<R, F: FnOnce(&IListBoxItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListBoxItemDataAutomationPeer, IListBoxItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListBoxItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListBoxItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListBoxItemDataAutomationPeer {}
impl ::core::fmt::Debug for ListBoxItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListBoxItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListBoxItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListBoxItemDataAutomationPeer;{fd7d5fee-fde0-482a-8084-dcebba5b9806})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListBoxItemDataAutomationPeer {
    type Vtable = IListBoxItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListBoxItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListBoxItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListBoxItemDataAutomationPeer";
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListBoxItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListBoxItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListBoxItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListBoxItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListBoxItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListBoxItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListBoxItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for AutomationPeer {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListBoxItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListBoxItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListBoxItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListBoxItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListBoxItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListBoxItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for ListBoxItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListPickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl ListPickerFlyoutPresenterAutomationPeer {}
impl ::core::clone::Clone for ListPickerFlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListPickerFlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListPickerFlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for ListPickerFlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListPickerFlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListPickerFlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListPickerFlyoutPresenterAutomationPeer;{56dfdc58-2395-4060-8047-8ea463698a24})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListPickerFlyoutPresenterAutomationPeer {
    type Vtable = IListPickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListPickerFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListPickerFlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListPickerFlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<ListPickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListPickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListPickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListPickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListPickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListPickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListPickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListPickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListPickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListPickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListPickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListPickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListPickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListPickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListPickerFlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for ListPickerFlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewAutomationPeer(::windows::core::IUnknown);
impl ListViewAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListView>>(owner: Param0) -> ::windows::core::Result<ListViewAutomationPeer> {
        Self::IListViewAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListViewAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListView>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListViewAutomationPeer> {
        Self::IListViewAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListViewAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListViewAutomationPeerFactory<R, F: FnOnce(&IListViewAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListViewAutomationPeer, IListViewAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListViewAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewAutomationPeer {}
impl ::core::fmt::Debug for ListViewAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewAutomationPeer;{73cecc87-c0dc-4260-9148-75e9864a7230})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewAutomationPeer {
    type Vtable = IListViewAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewAutomationPeer";
}
impl ::core::convert::From<ListViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::core::convert::TryInto::<super::Provider::IDropTargetProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for ListViewBaseAutomationPeer {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for ListViewBaseAutomationPeer {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for AutomationPeer {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewBaseAutomationPeer(::windows::core::IUnknown);
impl ListViewBaseAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn DropEffect(&self) -> ::windows::core::Result<::windows::core::HSTRING> {
        let this = &::windows::core::Interface::cast::<super::Provider::IDropTargetProvider>(self)?;
        unsafe {
            let mut result__: ::core::mem::ManuallyDrop<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).DropEffect)(::core::mem::transmute_copy(this), &mut result__).from_abi::<::windows::core::HSTRING>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn DropEffects(&self) -> ::windows::core::Result<::windows::core::Array<::windows::core::HSTRING>> {
        let this = &::windows::core::Interface::cast::<super::Provider::IDropTargetProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::Array<::windows::core::HSTRING> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).DropEffects)(::core::mem::transmute_copy(this), ::windows::core::Array::<::windows::core::HSTRING>::set_abi_len(&mut result__), &mut result__ as *mut _ as _).and_then(|| result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewBase>>(owner: Param0) -> ::windows::core::Result<ListViewBaseAutomationPeer> {
        Self::IListViewBaseAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListViewBaseAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewBase>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListViewBaseAutomationPeer> {
        Self::IListViewBaseAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListViewBaseAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListViewBaseAutomationPeerFactory<R, F: FnOnce(&IListViewBaseAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListViewBaseAutomationPeer, IListViewBaseAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListViewBaseAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewBaseAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewBaseAutomationPeer {}
impl ::core::fmt::Debug for ListViewBaseAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewBaseAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewBaseAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewBaseAutomationPeer;{87ec7649-b83d-4e55-9afd-bd835e748f5c})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewBaseAutomationPeer {
    type Vtable = IListViewBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewBaseAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewBaseAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewBaseAutomationPeer";
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewBaseAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewBaseAutomationPeer> for super::Provider::IDropTargetProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IDropTargetProvider> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IDropTargetProvider> {
        ::core::convert::TryInto::<super::Provider::IDropTargetProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewBaseAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewBaseAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewBaseAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewBaseAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for SelectorAutomationPeer {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for AutomationPeer {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewBaseAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewBaseAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewBaseHeaderItemAutomationPeer(::windows::core::IUnknown);
impl ListViewBaseHeaderItemAutomationPeer {}
impl ::core::clone::Clone for ListViewBaseHeaderItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewBaseHeaderItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewBaseHeaderItemAutomationPeer {}
impl ::core::fmt::Debug for ListViewBaseHeaderItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewBaseHeaderItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewBaseHeaderItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewBaseHeaderItemAutomationPeer;{7cb8b732-c1f0-4a3c-bc14-85dd48dedb85})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewBaseHeaderItemAutomationPeer {
    type Vtable = IListViewBaseHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewBaseHeaderItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewBaseHeaderItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewBaseHeaderItemAutomationPeer";
}
impl ::core::convert::From<ListViewBaseHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewBaseHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewBaseHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewBaseHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewBaseHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewBaseHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewBaseHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewBaseHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewBaseHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewBaseHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewBaseHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewBaseHeaderItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewBaseHeaderItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewHeaderItemAutomationPeer(::windows::core::IUnknown);
impl ListViewHeaderItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewHeaderItem>>(owner: Param0) -> ::windows::core::Result<ListViewHeaderItemAutomationPeer> {
        Self::IListViewHeaderItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListViewHeaderItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewHeaderItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListViewHeaderItemAutomationPeer> {
        Self::IListViewHeaderItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListViewHeaderItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListViewHeaderItemAutomationPeerFactory<R, F: FnOnce(&IListViewHeaderItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListViewHeaderItemAutomationPeer, IListViewHeaderItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListViewHeaderItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewHeaderItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewHeaderItemAutomationPeer {}
impl ::core::fmt::Debug for ListViewHeaderItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewHeaderItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewHeaderItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewHeaderItemAutomationPeer;{67ab1e4b-ad61-4c88-ba45-0f3a8d061f8f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewHeaderItemAutomationPeer {
    type Vtable = IListViewHeaderItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewHeaderItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewHeaderItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewHeaderItemAutomationPeer";
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for ListViewBaseHeaderItemAutomationPeer {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseHeaderItemAutomationPeer> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseHeaderItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewBaseHeaderItemAutomationPeer> for &ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewBaseHeaderItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewBaseHeaderItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewHeaderItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewHeaderItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewHeaderItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewHeaderItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewHeaderItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewHeaderItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewItemAutomationPeer(::windows::core::IUnknown);
impl ListViewItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewItem>>(owner: Param0) -> ::windows::core::Result<ListViewItemAutomationPeer> {
        Self::IListViewItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListViewItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ListViewItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ListViewItemAutomationPeer> {
        Self::IListViewItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListViewItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IListViewItemAutomationPeerFactory<R, F: FnOnce(&IListViewItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListViewItemAutomationPeer, IListViewItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListViewItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewItemAutomationPeer {}
impl ::core::fmt::Debug for ListViewItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewItemAutomationPeer;{ca114e70-a16d-4d09-a1cf-1856ef98a9ec})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewItemAutomationPeer {
    type Vtable = IListViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewItemAutomationPeer";
}
impl ::core::convert::From<ListViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ListViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ListViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewItemAutomationPeer> for AutomationPeer {
    fn from(value: ListViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ListViewItemDataAutomationPeer(::windows::core::IUnknown);
impl ListViewItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<ListViewItemDataAutomationPeer> {
        Self::IListViewItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ListViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, ListViewBaseAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<ListViewItemDataAutomationPeer> {
        Self::IListViewItemDataAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ListViewItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IListViewItemDataAutomationPeerFactory<R, F: FnOnce(&IListViewItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ListViewItemDataAutomationPeer, IListViewItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ListViewItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ListViewItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ListViewItemDataAutomationPeer {}
impl ::core::fmt::Debug for ListViewItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ListViewItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ListViewItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ListViewItemDataAutomationPeer;{15a8d7fd-d7a5-4a6c-963c-6f7ce464671a})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ListViewItemDataAutomationPeer {
    type Vtable = IListViewItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IListViewItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ListViewItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ListViewItemDataAutomationPeer";
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ListViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ListViewItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ListViewItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for SelectorItemAutomationPeer {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorItemAutomationPeer> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ListViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: ListViewItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ListViewItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ListViewItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ListViewItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ListViewItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for ListViewItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct LoopingSelectorAutomationPeer(::windows::core::IUnknown);
impl LoopingSelectorAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn FindItemByProperty<'a, Param0: ::windows::core::IntoParam<'a, super::Provider::IRawElementProviderSimple>, Param1: ::windows::core::IntoParam<'a, super::AutomationProperty>, Param2: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>>(&self, startafter: Param0, automationproperty: Param1, value: Param2) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::IItemContainerProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).FindItemByProperty)(::core::mem::transmute_copy(this), startafter.into_param().abi(), automationproperty.into_param().abi(), value.into_param().abi(), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Scroll(&self, horizontalamount: super::ScrollAmount, verticalamount: super::ScrollAmount) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Scroll)(::core::mem::transmute_copy(this), horizontalamount, verticalamount).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetScrollPercent(&self, horizontalpercent: f64, verticalpercent: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetScrollPercent)(::core::mem::transmute_copy(this), horizontalpercent, verticalpercent).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanSelectMultiple(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanSelectMultiple)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelectionRequired(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelectionRequired)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn GetSelection(&self) -> ::windows::core::Result<::windows::core::Array<super::Provider::IRawElementProviderSimple>> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::Array<super::Provider::IRawElementProviderSimple> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetSelection)(::core::mem::transmute_copy(this), ::windows::core::Array::<super::Provider::IRawElementProviderSimple>::set_abi_len(&mut result__), &mut result__ as *mut _ as _).and_then(|| result__)
        }
    }
}
impl ::core::clone::Clone for LoopingSelectorAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for LoopingSelectorAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for LoopingSelectorAutomationPeer {}
impl ::core::fmt::Debug for LoopingSelectorAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("LoopingSelectorAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for LoopingSelectorAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.LoopingSelectorAutomationPeer;{50b406ca-bae9-4816-8a3a-0cb4f96478a2})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for LoopingSelectorAutomationPeer {
    type Vtable = ILoopingSelectorAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ILoopingSelectorAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for LoopingSelectorAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.LoopingSelectorAutomationPeer";
}
impl ::core::convert::From<LoopingSelectorAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: LoopingSelectorAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &LoopingSelectorAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<LoopingSelectorAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: LoopingSelectorAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &LoopingSelectorAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<LoopingSelectorAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: LoopingSelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &LoopingSelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<LoopingSelectorAutomationPeer> for AutomationPeer {
    fn from(value: LoopingSelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorAutomationPeer> for AutomationPeer {
    fn from(value: &LoopingSelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<LoopingSelectorAutomationPeer> for super::super::DependencyObject {
    fn from(value: LoopingSelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorAutomationPeer> for super::super::DependencyObject {
    fn from(value: &LoopingSelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &LoopingSelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for LoopingSelectorAutomationPeer {}
unsafe impl ::core::marker::Sync for LoopingSelectorAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct LoopingSelectorItemAutomationPeer(::windows::core::IUnknown);
impl LoopingSelectorItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelected(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelected)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SelectionContainer(&self) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).SelectionContainer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn AddToSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).AddToSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn RemoveFromSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RemoveFromSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Select(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Select)(::core::mem::transmute_copy(this)).ok() }
    }
}
impl ::core::clone::Clone for LoopingSelectorItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for LoopingSelectorItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for LoopingSelectorItemAutomationPeer {}
impl ::core::fmt::Debug for LoopingSelectorItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("LoopingSelectorItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for LoopingSelectorItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.LoopingSelectorItemAutomationPeer;{d3fa68bf-04cf-4f4c-8d3e-4780a19d4788})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for LoopingSelectorItemAutomationPeer {
    type Vtable = ILoopingSelectorItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ILoopingSelectorItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for LoopingSelectorItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.LoopingSelectorItemAutomationPeer";
}
impl ::core::convert::From<LoopingSelectorItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: LoopingSelectorItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &LoopingSelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<LoopingSelectorItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: LoopingSelectorItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &LoopingSelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorItemAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorItemAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorItemAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorItemAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<LoopingSelectorItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: LoopingSelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &LoopingSelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<LoopingSelectorItemAutomationPeer> for AutomationPeer {
    fn from(value: LoopingSelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorItemAutomationPeer> for AutomationPeer {
    fn from(value: &LoopingSelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<LoopingSelectorItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: LoopingSelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &LoopingSelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &LoopingSelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for LoopingSelectorItemAutomationPeer {}
unsafe impl ::core::marker::Sync for LoopingSelectorItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct LoopingSelectorItemDataAutomationPeer(::windows::core::IUnknown);
impl LoopingSelectorItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Realize(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IVirtualizedItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Realize)(::core::mem::transmute_copy(this)).ok() }
    }
}
impl ::core::clone::Clone for LoopingSelectorItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for LoopingSelectorItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for LoopingSelectorItemDataAutomationPeer {}
impl ::core::fmt::Debug for LoopingSelectorItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("LoopingSelectorItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for LoopingSelectorItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.LoopingSelectorItemDataAutomationPeer;{ef567e32-7cd2-4d32-9590-1f588d5ef38d})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for LoopingSelectorItemDataAutomationPeer {
    type Vtable = ILoopingSelectorItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ILoopingSelectorItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for LoopingSelectorItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.LoopingSelectorItemDataAutomationPeer";
}
impl ::core::convert::From<LoopingSelectorItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: LoopingSelectorItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &LoopingSelectorItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<LoopingSelectorItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: LoopingSelectorItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&LoopingSelectorItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &LoopingSelectorItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<LoopingSelectorItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: LoopingSelectorItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&LoopingSelectorItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &LoopingSelectorItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<LoopingSelectorItemDataAutomationPeer> for AutomationPeer {
    fn from(value: LoopingSelectorItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &LoopingSelectorItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<LoopingSelectorItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: LoopingSelectorItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&LoopingSelectorItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &LoopingSelectorItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &LoopingSelectorItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for LoopingSelectorItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for LoopingSelectorItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MapControlAutomationPeer(::windows::core::IUnknown);
impl MapControlAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Scroll(&self, horizontalamount: super::ScrollAmount, verticalamount: super::ScrollAmount) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Scroll)(::core::mem::transmute_copy(this), horizontalamount, verticalamount).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetScrollPercent(&self, horizontalpercent: f64, verticalpercent: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetScrollPercent)(::core::mem::transmute_copy(this), horizontalpercent, verticalpercent).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanMove(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanMove)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanResize(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanResize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanRotate(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanRotate)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Move(&self, x: f64, y: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Move)(::core::mem::transmute_copy(this), x, y).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Resize(&self, width: f64, height: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Resize)(::core::mem::transmute_copy(this), width, height).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Rotate(&self, degrees: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Rotate)(::core::mem::transmute_copy(this), degrees).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanZoom(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanZoom)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ZoomLevel(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ZoomLevel)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn MaxZoom(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).MaxZoom)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn MinZoom(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).MinZoom)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Zoom(&self, zoom: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Zoom)(::core::mem::transmute_copy(this), zoom).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ZoomByUnit(&self, zoomunit: super::ZoomUnit) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ITransformProvider2>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ZoomByUnit)(::core::mem::transmute_copy(this), zoomunit).ok() }
    }
}
impl ::core::clone::Clone for MapControlAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MapControlAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MapControlAutomationPeer {}
impl ::core::fmt::Debug for MapControlAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MapControlAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MapControlAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MapControlAutomationPeer;{425beee4-f2e8-4bcb-9382-5dfdd11fe45f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MapControlAutomationPeer {
    type Vtable = IMapControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMapControlAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MapControlAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MapControlAutomationPeer";
}
impl ::core::convert::From<MapControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MapControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MapControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MapControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MapControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MapControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MapControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MapControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MapControlAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MapControlAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MapControlAutomationPeer> for super::Provider::ITransformProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MapControlAutomationPeer> for super::Provider::ITransformProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ITransformProvider> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ITransformProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ITransformProvider> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ITransformProvider> {
        ::core::convert::TryInto::<super::Provider::ITransformProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MapControlAutomationPeer> for super::Provider::ITransformProvider2 {
    type Error = ::windows::core::Error;
    fn try_from(value: MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MapControlAutomationPeer> for super::Provider::ITransformProvider2 {
    type Error = ::windows::core::Error;
    fn try_from(value: &MapControlAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ITransformProvider2> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ITransformProvider2> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ITransformProvider2> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ITransformProvider2> {
        ::core::convert::TryInto::<super::Provider::ITransformProvider2>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<MapControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MapControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MapControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MapControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MapControlAutomationPeer> for AutomationPeer {
    fn from(value: MapControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MapControlAutomationPeer> for AutomationPeer {
    fn from(value: &MapControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MapControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: MapControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MapControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MapControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MapControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MapControlAutomationPeer {}
unsafe impl ::core::marker::Sync for MapControlAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MediaElementAutomationPeer(::windows::core::IUnknown);
impl MediaElementAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaElement>>(owner: Param0) -> ::windows::core::Result<MediaElementAutomationPeer> {
        Self::IMediaElementAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MediaElementAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaElement>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MediaElementAutomationPeer> {
        Self::IMediaElementAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MediaElementAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMediaElementAutomationPeerFactory<R, F: FnOnce(&IMediaElementAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MediaElementAutomationPeer, IMediaElementAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MediaElementAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MediaElementAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MediaElementAutomationPeer {}
impl ::core::fmt::Debug for MediaElementAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MediaElementAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MediaElementAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MediaElementAutomationPeer;{ba0b9fc2-a6e2-41a5-b17a-d1594613efba})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MediaElementAutomationPeer {
    type Vtable = IMediaElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMediaElementAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MediaElementAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MediaElementAutomationPeer";
}
impl ::core::convert::From<MediaElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MediaElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MediaElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MediaElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MediaElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MediaElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MediaElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaElementAutomationPeer> for AutomationPeer {
    fn from(value: MediaElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaElementAutomationPeer> for AutomationPeer {
    fn from(value: &MediaElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: MediaElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MediaElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MediaElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MediaElementAutomationPeer {}
unsafe impl ::core::marker::Sync for MediaElementAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MediaPlayerElementAutomationPeer(::windows::core::IUnknown);
impl MediaPlayerElementAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaPlayerElement>>(owner: Param0) -> ::windows::core::Result<MediaPlayerElementAutomationPeer> {
        Self::IMediaPlayerElementAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MediaPlayerElementAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaPlayerElement>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MediaPlayerElementAutomationPeer> {
        Self::IMediaPlayerElementAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MediaPlayerElementAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMediaPlayerElementAutomationPeerFactory<R, F: FnOnce(&IMediaPlayerElementAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MediaPlayerElementAutomationPeer, IMediaPlayerElementAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MediaPlayerElementAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MediaPlayerElementAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MediaPlayerElementAutomationPeer {}
impl ::core::fmt::Debug for MediaPlayerElementAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MediaPlayerElementAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MediaPlayerElementAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MediaPlayerElementAutomationPeer;{02bed209-3f65-4fdd-b5ca-c4750d4e6ea4})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MediaPlayerElementAutomationPeer {
    type Vtable = IMediaPlayerElementAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMediaPlayerElementAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MediaPlayerElementAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MediaPlayerElementAutomationPeer";
}
impl ::core::convert::From<MediaPlayerElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MediaPlayerElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaPlayerElementAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MediaPlayerElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaPlayerElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MediaPlayerElementAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaPlayerElementAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MediaPlayerElementAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaPlayerElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MediaPlayerElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaPlayerElementAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MediaPlayerElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaPlayerElementAutomationPeer> for AutomationPeer {
    fn from(value: MediaPlayerElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaPlayerElementAutomationPeer> for AutomationPeer {
    fn from(value: &MediaPlayerElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaPlayerElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: MediaPlayerElementAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaPlayerElementAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MediaPlayerElementAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MediaPlayerElementAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MediaPlayerElementAutomationPeer {}
unsafe impl ::core::marker::Sync for MediaPlayerElementAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MediaTransportControlsAutomationPeer(::windows::core::IUnknown);
impl MediaTransportControlsAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaTransportControls>>(owner: Param0) -> ::windows::core::Result<MediaTransportControlsAutomationPeer> {
        Self::IMediaTransportControlsAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MediaTransportControlsAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MediaTransportControls>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MediaTransportControlsAutomationPeer> {
        Self::IMediaTransportControlsAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MediaTransportControlsAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMediaTransportControlsAutomationPeerFactory<R, F: FnOnce(&IMediaTransportControlsAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MediaTransportControlsAutomationPeer, IMediaTransportControlsAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MediaTransportControlsAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MediaTransportControlsAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MediaTransportControlsAutomationPeer {}
impl ::core::fmt::Debug for MediaTransportControlsAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MediaTransportControlsAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MediaTransportControlsAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MediaTransportControlsAutomationPeer;{a3ad8d93-79f8-4958-a3c8-980defb83d15})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MediaTransportControlsAutomationPeer {
    type Vtable = IMediaTransportControlsAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMediaTransportControlsAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MediaTransportControlsAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MediaTransportControlsAutomationPeer";
}
impl ::core::convert::From<MediaTransportControlsAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MediaTransportControlsAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaTransportControlsAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MediaTransportControlsAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaTransportControlsAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MediaTransportControlsAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MediaTransportControlsAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MediaTransportControlsAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MediaTransportControlsAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MediaTransportControlsAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaTransportControlsAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MediaTransportControlsAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaTransportControlsAutomationPeer> for AutomationPeer {
    fn from(value: MediaTransportControlsAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaTransportControlsAutomationPeer> for AutomationPeer {
    fn from(value: &MediaTransportControlsAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MediaTransportControlsAutomationPeer> for super::super::DependencyObject {
    fn from(value: MediaTransportControlsAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MediaTransportControlsAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MediaTransportControlsAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MediaTransportControlsAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MediaTransportControlsAutomationPeer {}
unsafe impl ::core::marker::Sync for MediaTransportControlsAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MenuBarAutomationPeer(::windows::core::IUnknown);
impl MenuBarAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstance<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuBar>>(owner: Param0) -> ::windows::core::Result<MenuBarAutomationPeer> {
        Self::IMenuBarAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstance)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MenuBarAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstance_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuBar>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MenuBarAutomationPeer> {
        Self::IMenuBarAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstance)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MenuBarAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMenuBarAutomationPeerFactory<R, F: FnOnce(&IMenuBarAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MenuBarAutomationPeer, IMenuBarAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MenuBarAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MenuBarAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MenuBarAutomationPeer {}
impl ::core::fmt::Debug for MenuBarAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MenuBarAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MenuBarAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MenuBarAutomationPeer;{4b6adcf1-f274-5592-85a8-7b099e99b320})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MenuBarAutomationPeer {
    type Vtable = IMenuBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMenuBarAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MenuBarAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MenuBarAutomationPeer";
}
impl ::core::convert::From<MenuBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MenuBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MenuBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MenuBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MenuBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MenuBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MenuBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MenuBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MenuBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuBarAutomationPeer> for AutomationPeer {
    fn from(value: MenuBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarAutomationPeer> for AutomationPeer {
    fn from(value: &MenuBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: MenuBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MenuBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MenuBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MenuBarAutomationPeer {}
unsafe impl ::core::marker::Sync for MenuBarAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MenuBarItemAutomationPeer(::windows::core::IUnknown);
impl MenuBarItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstance<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuBarItem>>(owner: Param0) -> ::windows::core::Result<MenuBarItemAutomationPeer> {
        Self::IMenuBarItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstance)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MenuBarItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstance_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuBarItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MenuBarItemAutomationPeer> {
        Self::IMenuBarItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstance)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MenuBarItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMenuBarItemAutomationPeerFactory<R, F: FnOnce(&IMenuBarItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MenuBarItemAutomationPeer, IMenuBarItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MenuBarItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MenuBarItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MenuBarItemAutomationPeer {}
impl ::core::fmt::Debug for MenuBarItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MenuBarItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MenuBarItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MenuBarItemAutomationPeer;{0fce49b4-cff5-5c4b-98ee-e75fdddf799a})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MenuBarItemAutomationPeer {
    type Vtable = IMenuBarItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMenuBarItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MenuBarItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MenuBarItemAutomationPeer";
}
impl ::core::convert::From<MenuBarItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MenuBarItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuBarItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MenuBarItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MenuBarItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MenuBarItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuBarItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MenuBarItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MenuBarItemAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MenuBarItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MenuBarItemAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MenuBarItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MenuBarItemAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MenuBarItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MenuBarItemAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MenuBarItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<MenuBarItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MenuBarItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MenuBarItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuBarItemAutomationPeer> for AutomationPeer {
    fn from(value: MenuBarItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarItemAutomationPeer> for AutomationPeer {
    fn from(value: &MenuBarItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuBarItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: MenuBarItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuBarItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MenuBarItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MenuBarItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MenuBarItemAutomationPeer {}
unsafe impl ::core::marker::Sync for MenuBarItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MenuFlyoutItemAutomationPeer(::windows::core::IUnknown);
impl MenuFlyoutItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuFlyoutItem>>(owner: Param0) -> ::windows::core::Result<MenuFlyoutItemAutomationPeer> {
        Self::IMenuFlyoutItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MenuFlyoutItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuFlyoutItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MenuFlyoutItemAutomationPeer> {
        Self::IMenuFlyoutItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MenuFlyoutItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMenuFlyoutItemAutomationPeerFactory<R, F: FnOnce(&IMenuFlyoutItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MenuFlyoutItemAutomationPeer, IMenuFlyoutItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MenuFlyoutItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MenuFlyoutItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MenuFlyoutItemAutomationPeer {}
impl ::core::fmt::Debug for MenuFlyoutItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MenuFlyoutItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MenuFlyoutItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MenuFlyoutItemAutomationPeer;{1fc19462-21df-456e-aa11-8fac6b4b2af6})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MenuFlyoutItemAutomationPeer {
    type Vtable = IMenuFlyoutItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMenuFlyoutItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MenuFlyoutItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MenuFlyoutItemAutomationPeer";
}
impl ::core::convert::From<MenuFlyoutItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MenuFlyoutItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuFlyoutItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MenuFlyoutItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MenuFlyoutItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuFlyoutItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MenuFlyoutItemAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MenuFlyoutItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MenuFlyoutItemAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MenuFlyoutItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<MenuFlyoutItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuFlyoutItemAutomationPeer> for AutomationPeer {
    fn from(value: MenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutItemAutomationPeer> for AutomationPeer {
    fn from(value: &MenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuFlyoutItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: MenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MenuFlyoutItemAutomationPeer {}
unsafe impl ::core::marker::Sync for MenuFlyoutItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct MenuFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl MenuFlyoutPresenterAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuFlyoutPresenter>>(owner: Param0) -> ::windows::core::Result<MenuFlyoutPresenterAutomationPeer> {
        Self::IMenuFlyoutPresenterAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<MenuFlyoutPresenterAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::MenuFlyoutPresenter>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<MenuFlyoutPresenterAutomationPeer> {
        Self::IMenuFlyoutPresenterAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<MenuFlyoutPresenterAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IMenuFlyoutPresenterAutomationPeerFactory<R, F: FnOnce(&IMenuFlyoutPresenterAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<MenuFlyoutPresenterAutomationPeer, IMenuFlyoutPresenterAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for MenuFlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for MenuFlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for MenuFlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for MenuFlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("MenuFlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for MenuFlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.MenuFlyoutPresenterAutomationPeer;{e244a871-fcbb-48fc-8a93-41ea134b53ce})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for MenuFlyoutPresenterAutomationPeer {
    type Vtable = IMenuFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IMenuFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for MenuFlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.MenuFlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<MenuFlyoutPresenterAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: MenuFlyoutPresenterAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&MenuFlyoutPresenterAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &MenuFlyoutPresenterAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<MenuFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: MenuFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&MenuFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &MenuFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &MenuFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for MenuFlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for MenuFlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct NavigationViewItemAutomationPeer(::windows::core::IUnknown);
impl NavigationViewItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::NavigationViewItem>>(owner: Param0) -> ::windows::core::Result<NavigationViewItemAutomationPeer> {
        Self::INavigationViewItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<NavigationViewItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::NavigationViewItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<NavigationViewItemAutomationPeer> {
        Self::INavigationViewItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<NavigationViewItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn INavigationViewItemAutomationPeerFactory<R, F: FnOnce(&INavigationViewItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<NavigationViewItemAutomationPeer, INavigationViewItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for NavigationViewItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for NavigationViewItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for NavigationViewItemAutomationPeer {}
impl ::core::fmt::Debug for NavigationViewItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("NavigationViewItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for NavigationViewItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.NavigationViewItemAutomationPeer;{309847a5-9971-4d8d-a81c-085c7086a1b9})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for NavigationViewItemAutomationPeer {
    type Vtable = INavigationViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <INavigationViewItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for NavigationViewItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.NavigationViewItemAutomationPeer";
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for ListViewItemAutomationPeer {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for ListViewItemAutomationPeer {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewItemAutomationPeer> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewItemAutomationPeer> for &NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for AutomationPeer {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for AutomationPeer {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<NavigationViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: NavigationViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&NavigationViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &NavigationViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &NavigationViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for NavigationViewItemAutomationPeer {}
unsafe impl ::core::marker::Sync for NavigationViewItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PasswordBoxAutomationPeer(::windows::core::IUnknown);
impl PasswordBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::PasswordBox>>(owner: Param0) -> ::windows::core::Result<PasswordBoxAutomationPeer> {
        Self::IPasswordBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<PasswordBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::PasswordBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<PasswordBoxAutomationPeer> {
        Self::IPasswordBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<PasswordBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IPasswordBoxAutomationPeerFactory<R, F: FnOnce(&IPasswordBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<PasswordBoxAutomationPeer, IPasswordBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for PasswordBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PasswordBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PasswordBoxAutomationPeer {}
impl ::core::fmt::Debug for PasswordBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PasswordBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PasswordBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PasswordBoxAutomationPeer;{684f065e-3df3-4b9f-82ad-8819db3b218a})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PasswordBoxAutomationPeer {
    type Vtable = IPasswordBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPasswordBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PasswordBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PasswordBoxAutomationPeer";
}
impl ::core::convert::From<PasswordBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PasswordBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PasswordBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PasswordBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PasswordBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PasswordBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PasswordBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PasswordBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PasswordBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: PasswordBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PasswordBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &PasswordBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PasswordBoxAutomationPeer> for AutomationPeer {
    fn from(value: PasswordBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PasswordBoxAutomationPeer> for AutomationPeer {
    fn from(value: &PasswordBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PasswordBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: PasswordBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PasswordBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PasswordBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PasswordBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PasswordBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for PasswordBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
#[derive(:: core :: cmp :: PartialEq, :: core :: cmp :: Eq)]
pub struct PatternInterface(pub i32);
impl PatternInterface {
    pub const Invoke: Self = Self(0i32);
    pub const Selection: Self = Self(1i32);
    pub const Value: Self = Self(2i32);
    pub const RangeValue: Self = Self(3i32);
    pub const Scroll: Self = Self(4i32);
    pub const ScrollItem: Self = Self(5i32);
    pub const ExpandCollapse: Self = Self(6i32);
    pub const Grid: Self = Self(7i32);
    pub const GridItem: Self = Self(8i32);
    pub const MultipleView: Self = Self(9i32);
    pub const Window: Self = Self(10i32);
    pub const SelectionItem: Self = Self(11i32);
    pub const Dock: Self = Self(12i32);
    pub const Table: Self = Self(13i32);
    pub const TableItem: Self = Self(14i32);
    pub const Toggle: Self = Self(15i32);
    pub const Transform: Self = Self(16i32);
    pub const Text: Self = Self(17i32);
    pub const ItemContainer: Self = Self(18i32);
    pub const VirtualizedItem: Self = Self(19i32);
    pub const Text2: Self = Self(20i32);
    pub const TextChild: Self = Self(21i32);
    pub const TextRange: Self = Self(22i32);
    pub const Annotation: Self = Self(23i32);
    pub const Drag: Self = Self(24i32);
    pub const DropTarget: Self = Self(25i32);
    pub const ObjectModel: Self = Self(26i32);
    pub const Spreadsheet: Self = Self(27i32);
    pub const SpreadsheetItem: Self = Self(28i32);
    pub const Styles: Self = Self(29i32);
    pub const Transform2: Self = Self(30i32);
    pub const SynchronizedInput: Self = Self(31i32);
    pub const TextEdit: Self = Self(32i32);
    pub const CustomNavigation: Self = Self(33i32);
}
impl ::core::marker::Copy for PatternInterface {}
impl ::core::clone::Clone for PatternInterface {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PatternInterface {
    fn default() -> Self {
        Self(0)
    }
}
unsafe impl ::windows::core::Abi for PatternInterface {
    type Abi = Self;
}
impl ::core::fmt::Debug for PatternInterface {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PatternInterface").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PatternInterface {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"enum(Windows.UI.Xaml.Automation.Peers.PatternInterface;i4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PersonPictureAutomationPeer(::windows::core::IUnknown);
impl PersonPictureAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::PersonPicture>>(owner: Param0) -> ::windows::core::Result<PersonPictureAutomationPeer> {
        Self::IPersonPictureAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<PersonPictureAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::PersonPicture>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<PersonPictureAutomationPeer> {
        Self::IPersonPictureAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<PersonPictureAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IPersonPictureAutomationPeerFactory<R, F: FnOnce(&IPersonPictureAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<PersonPictureAutomationPeer, IPersonPictureAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for PersonPictureAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PersonPictureAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PersonPictureAutomationPeer {}
impl ::core::fmt::Debug for PersonPictureAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PersonPictureAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PersonPictureAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PersonPictureAutomationPeer;{27156d4c-a66f-4aaf-8286-4f796d30628c})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PersonPictureAutomationPeer {
    type Vtable = IPersonPictureAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPersonPictureAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PersonPictureAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PersonPictureAutomationPeer";
}
impl ::core::convert::From<PersonPictureAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PersonPictureAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PersonPictureAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PersonPictureAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PersonPictureAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PersonPictureAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PersonPictureAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PersonPictureAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PersonPictureAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: PersonPictureAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PersonPictureAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &PersonPictureAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PersonPictureAutomationPeer> for AutomationPeer {
    fn from(value: PersonPictureAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PersonPictureAutomationPeer> for AutomationPeer {
    fn from(value: &PersonPictureAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PersonPictureAutomationPeer> for super::super::DependencyObject {
    fn from(value: PersonPictureAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PersonPictureAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PersonPictureAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PersonPictureAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PersonPictureAutomationPeer {}
unsafe impl ::core::marker::Sync for PersonPictureAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl PickerFlyoutPresenterAutomationPeer {}
impl ::core::clone::Clone for PickerFlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PickerFlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PickerFlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for PickerFlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PickerFlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PickerFlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PickerFlyoutPresenterAutomationPeer;{28414bf7-8382-4eae-93c1-d6f035aa8155})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PickerFlyoutPresenterAutomationPeer {
    type Vtable = IPickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPickerFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PickerFlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PickerFlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<PickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: PickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &PickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: PickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &PickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: PickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PickerFlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for PickerFlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PivotAutomationPeer(::windows::core::IUnknown);
impl PivotAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Pivot>>(owner: Param0) -> ::windows::core::Result<PivotAutomationPeer> {
        Self::IPivotAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), &mut result__).from_abi::<PivotAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Scroll(&self, horizontalamount: super::ScrollAmount, verticalamount: super::ScrollAmount) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Scroll)(::core::mem::transmute_copy(this), horizontalamount, verticalamount).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetScrollPercent(&self, horizontalpercent: f64, verticalpercent: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetScrollPercent)(::core::mem::transmute_copy(this), horizontalpercent, verticalpercent).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanSelectMultiple(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanSelectMultiple)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelectionRequired(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelectionRequired)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn GetSelection(&self) -> ::windows::core::Result<::windows::core::Array<super::Provider::IRawElementProviderSimple>> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::Array<super::Provider::IRawElementProviderSimple> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetSelection)(::core::mem::transmute_copy(this), ::windows::core::Array::<super::Provider::IRawElementProviderSimple>::set_abi_len(&mut result__), &mut result__ as *mut _ as _).and_then(|| result__)
        }
    }
    #[doc(hidden)]
    pub fn IPivotAutomationPeerFactory<R, F: FnOnce(&IPivotAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<PivotAutomationPeer, IPivotAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for PivotAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PivotAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PivotAutomationPeer {}
impl ::core::fmt::Debug for PivotAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PivotAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PivotAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PivotAutomationPeer;{e715a8f8-3b9d-402c-81e2-6e912ef58981})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PivotAutomationPeer {
    type Vtable = IPivotAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPivotAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PivotAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PivotAutomationPeer";
}
impl ::core::convert::From<PivotAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PivotAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PivotAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PivotAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<PivotAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: PivotAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: PivotAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotAutomationPeer> for AutomationPeer {
    fn from(value: PivotAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for AutomationPeer {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotAutomationPeer> for super::super::DependencyObject {
    fn from(value: PivotAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PivotAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PivotAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PivotAutomationPeer {}
unsafe impl ::core::marker::Sync for PivotAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PivotItemAutomationPeer(::windows::core::IUnknown);
impl PivotItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::PivotItem>>(owner: Param0) -> ::windows::core::Result<PivotItemAutomationPeer> {
        Self::IPivotItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), &mut result__).from_abi::<PivotItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IPivotItemAutomationPeerFactory<R, F: FnOnce(&IPivotItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<PivotItemAutomationPeer, IPivotItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for PivotItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PivotItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PivotItemAutomationPeer {}
impl ::core::fmt::Debug for PivotItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PivotItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PivotItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PivotItemAutomationPeer;{1a4241ad-5d55-4d27-b40f-2d37506fbe78})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PivotItemAutomationPeer {
    type Vtable = IPivotItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPivotItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PivotItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PivotItemAutomationPeer";
}
impl ::core::convert::From<PivotItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PivotItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PivotItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PivotItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PivotItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PivotItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PivotItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: PivotItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &PivotItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotItemAutomationPeer> for AutomationPeer {
    fn from(value: PivotItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemAutomationPeer> for AutomationPeer {
    fn from(value: &PivotItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: PivotItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PivotItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PivotItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PivotItemAutomationPeer {}
unsafe impl ::core::marker::Sync for PivotItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct PivotItemDataAutomationPeer(::windows::core::IUnknown);
impl PivotItemDataAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, PivotAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<PivotItemDataAutomationPeer> {
        Self::IPivotItemDataAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), &mut result__).from_abi::<PivotItemDataAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ScrollIntoView(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).ScrollIntoView)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelected(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelected)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SelectionContainer(&self) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).SelectionContainer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn AddToSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).AddToSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn RemoveFromSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RemoveFromSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Select(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Select)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Realize(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IVirtualizedItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Realize)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IPivotItemDataAutomationPeerFactory<R, F: FnOnce(&IPivotItemDataAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<PivotItemDataAutomationPeer, IPivotItemDataAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for PivotItemDataAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for PivotItemDataAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for PivotItemDataAutomationPeer {}
impl ::core::fmt::Debug for PivotItemDataAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PivotItemDataAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for PivotItemDataAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.PivotItemDataAutomationPeer;{a2a3b788-ea1d-48b7-88ee-f08b6aa07fee})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for PivotItemDataAutomationPeer {
    type Vtable = IPivotItemDataAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IPivotItemDataAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for PivotItemDataAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.PivotItemDataAutomationPeer";
}
impl ::core::convert::From<PivotItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: PivotItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotItemDataAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &PivotItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<PivotItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: PivotItemDataAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&PivotItemDataAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &PivotItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotItemDataAutomationPeer> for super::Provider::IScrollItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollItemProvider> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollItemProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotItemDataAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<PivotItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&PivotItemDataAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &PivotItemDataAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<PivotItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: PivotItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemDataAutomationPeer> for ItemAutomationPeer {
    fn from(value: &PivotItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotItemDataAutomationPeer> for AutomationPeer {
    fn from(value: PivotItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemDataAutomationPeer> for AutomationPeer {
    fn from(value: &PivotItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<PivotItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: PivotItemDataAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&PivotItemDataAutomationPeer> for super::super::DependencyObject {
    fn from(value: &PivotItemDataAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &PivotItemDataAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for PivotItemDataAutomationPeer {}
unsafe impl ::core::marker::Sync for PivotItemDataAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ProgressBarAutomationPeer(::windows::core::IUnknown);
impl ProgressBarAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ProgressBar>>(owner: Param0) -> ::windows::core::Result<ProgressBarAutomationPeer> {
        Self::IProgressBarAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ProgressBarAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ProgressBar>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ProgressBarAutomationPeer> {
        Self::IProgressBarAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ProgressBarAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IProgressBarAutomationPeerFactory<R, F: FnOnce(&IProgressBarAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ProgressBarAutomationPeer, IProgressBarAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ProgressBarAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ProgressBarAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ProgressBarAutomationPeer {}
impl ::core::fmt::Debug for ProgressBarAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ProgressBarAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ProgressBarAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ProgressBarAutomationPeer;{93f48f86-d840-4fb6-ac2f-5f779b854b0d})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ProgressBarAutomationPeer {
    type Vtable = IProgressBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IProgressBarAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ProgressBarAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ProgressBarAutomationPeer";
}
impl ::core::convert::From<ProgressBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ProgressBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ProgressBarAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ProgressBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ProgressBarAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ProgressBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for &ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::core::convert::TryInto::<super::Provider::IRangeValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ProgressBarAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for &ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<RangeBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ProgressBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ProgressBarAutomationPeer> for AutomationPeer {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for AutomationPeer {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ProgressBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: ProgressBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ProgressBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ProgressBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ProgressBarAutomationPeer {}
unsafe impl ::core::marker::Sync for ProgressBarAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ProgressRingAutomationPeer(::windows::core::IUnknown);
impl ProgressRingAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ProgressRing>>(owner: Param0) -> ::windows::core::Result<ProgressRingAutomationPeer> {
        Self::IProgressRingAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ProgressRingAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ProgressRing>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ProgressRingAutomationPeer> {
        Self::IProgressRingAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ProgressRingAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IProgressRingAutomationPeerFactory<R, F: FnOnce(&IProgressRingAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ProgressRingAutomationPeer, IProgressRingAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ProgressRingAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ProgressRingAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ProgressRingAutomationPeer {}
impl ::core::fmt::Debug for ProgressRingAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ProgressRingAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ProgressRingAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ProgressRingAutomationPeer;{bc305eee-39d3-4eeb-ac33-2394de123e2e})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ProgressRingAutomationPeer {
    type Vtable = IProgressRingAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IProgressRingAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ProgressRingAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ProgressRingAutomationPeer";
}
impl ::core::convert::From<ProgressRingAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ProgressRingAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ProgressRingAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ProgressRingAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ProgressRingAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ProgressRingAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ProgressRingAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ProgressRingAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ProgressRingAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ProgressRingAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressRingAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ProgressRingAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ProgressRingAutomationPeer> for AutomationPeer {
    fn from(value: ProgressRingAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressRingAutomationPeer> for AutomationPeer {
    fn from(value: &ProgressRingAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ProgressRingAutomationPeer> for super::super::DependencyObject {
    fn from(value: ProgressRingAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ProgressRingAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ProgressRingAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ProgressRingAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ProgressRingAutomationPeer {}
unsafe impl ::core::marker::Sync for ProgressRingAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RadioButtonAutomationPeer(::windows::core::IUnknown);
impl RadioButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RadioButton>>(owner: Param0) -> ::windows::core::Result<RadioButtonAutomationPeer> {
        Self::IRadioButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RadioButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RadioButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RadioButtonAutomationPeer> {
        Self::IRadioButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RadioButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelected(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelected)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SelectionContainer(&self) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).SelectionContainer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn AddToSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).AddToSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn RemoveFromSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RemoveFromSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Select(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Select)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IRadioButtonAutomationPeerFactory<R, F: FnOnce(&IRadioButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RadioButtonAutomationPeer, IRadioButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RadioButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RadioButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RadioButtonAutomationPeer {}
impl ::core::fmt::Debug for RadioButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RadioButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RadioButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RadioButtonAutomationPeer;{7e6a5ed8-0b30-4743-b102-dcdf548e3131})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RadioButtonAutomationPeer {
    type Vtable = IRadioButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRadioButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RadioButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RadioButtonAutomationPeer";
}
impl ::core::convert::From<RadioButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<RadioButtonAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: RadioButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&RadioButtonAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &RadioButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<RadioButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: RadioButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&RadioButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &RadioButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for ToggleButtonAutomationPeer {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ToggleButtonAutomationPeer> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ToggleButtonAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ToggleButtonAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for AutomationPeer {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for AutomationPeer {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RadioButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: RadioButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RadioButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RadioButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RadioButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RadioButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for RadioButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RangeBaseAutomationPeer(::windows::core::IUnknown);
impl RangeBaseAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::RangeBase>>(owner: Param0) -> ::windows::core::Result<RangeBaseAutomationPeer> {
        Self::IRangeBaseAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RangeBaseAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::RangeBase>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RangeBaseAutomationPeer> {
        Self::IRangeBaseAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RangeBaseAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsReadOnly(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsReadOnly)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn LargeChange(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).LargeChange)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Maximum(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Maximum)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Minimum(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Minimum)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SmallChange(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).SmallChange)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Value(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).Value)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetValue(&self, value: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IRangeValueProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetValue)(::core::mem::transmute_copy(this), value).ok() }
    }
    #[doc(hidden)]
    pub fn IRangeBaseAutomationPeerFactory<R, F: FnOnce(&IRangeBaseAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RangeBaseAutomationPeer, IRangeBaseAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RangeBaseAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RangeBaseAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RangeBaseAutomationPeer {}
impl ::core::fmt::Debug for RangeBaseAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RangeBaseAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RangeBaseAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer;{e454b549-4b2c-42ad-b04b-d35947d1ee50})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RangeBaseAutomationPeer {
    type Vtable = IRangeBaseAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRangeBaseAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RangeBaseAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer";
}
impl ::core::convert::From<RangeBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RangeBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RangeBaseAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RangeBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RangeBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RangeBaseAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RangeBaseAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RangeBaseAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<RangeBaseAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: RangeBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&RangeBaseAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &RangeBaseAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for &RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::core::convert::TryInto::<super::Provider::IRangeValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<RangeBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RangeBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RangeBaseAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RangeBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RangeBaseAutomationPeer> for AutomationPeer {
    fn from(value: RangeBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RangeBaseAutomationPeer> for AutomationPeer {
    fn from(value: &RangeBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RangeBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: RangeBaseAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RangeBaseAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RangeBaseAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RangeBaseAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RangeBaseAutomationPeer {}
unsafe impl ::core::marker::Sync for RangeBaseAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RatingControlAutomationPeer(::windows::core::IUnknown);
impl RatingControlAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RatingControl>>(owner: Param0) -> ::windows::core::Result<RatingControlAutomationPeer> {
        Self::IRatingControlAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RatingControlAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RatingControl>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RatingControlAutomationPeer> {
        Self::IRatingControlAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RatingControlAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IRatingControlAutomationPeerFactory<R, F: FnOnce(&IRatingControlAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RatingControlAutomationPeer, IRatingControlAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RatingControlAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RatingControlAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RatingControlAutomationPeer {}
impl ::core::fmt::Debug for RatingControlAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RatingControlAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RatingControlAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RatingControlAutomationPeer;{3d14349a-9963-4a47-823c-f457cb3209d5})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RatingControlAutomationPeer {
    type Vtable = IRatingControlAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRatingControlAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RatingControlAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RatingControlAutomationPeer";
}
impl ::core::convert::From<RatingControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RatingControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RatingControlAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RatingControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RatingControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RatingControlAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RatingControlAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RatingControlAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RatingControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RatingControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RatingControlAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RatingControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RatingControlAutomationPeer> for AutomationPeer {
    fn from(value: RatingControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RatingControlAutomationPeer> for AutomationPeer {
    fn from(value: &RatingControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RatingControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: RatingControlAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RatingControlAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RatingControlAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RatingControlAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RatingControlAutomationPeer {}
unsafe impl ::core::marker::Sync for RatingControlAutomationPeer {}
#[repr(C)]
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
pub struct RawElementProviderRuntimeId {
    pub Part1: u32,
    pub Part2: u32,
}
impl ::core::marker::Copy for RawElementProviderRuntimeId {}
impl ::core::clone::Clone for RawElementProviderRuntimeId {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for RawElementProviderRuntimeId {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("RawElementProviderRuntimeId").field("Part1", &self.Part1).field("Part2", &self.Part2).finish()
    }
}
unsafe impl ::windows::core::Abi for RawElementProviderRuntimeId {
    type Abi = Self;
}
unsafe impl ::windows::core::RuntimeType for RawElementProviderRuntimeId {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"struct(Windows.UI.Xaml.Automation.Peers.RawElementProviderRuntimeId;u4;u4)");
    type DefaultType = Self;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        Ok(*from)
    }
}
impl ::core::cmp::PartialEq for RawElementProviderRuntimeId {
    fn eq(&self, other: &Self) -> bool {
        unsafe { ::windows::core::memcmp(self as *const _ as _, other as *const _ as _, core::mem::size_of::<RawElementProviderRuntimeId>()) == 0 }
    }
}
impl ::core::cmp::Eq for RawElementProviderRuntimeId {}
impl ::core::default::Default for RawElementProviderRuntimeId {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RepeatButtonAutomationPeer(::windows::core::IUnknown);
impl RepeatButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Invoke(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IInvokeProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Invoke)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::RepeatButton>>(owner: Param0) -> ::windows::core::Result<RepeatButtonAutomationPeer> {
        Self::IRepeatButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RepeatButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::RepeatButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RepeatButtonAutomationPeer> {
        Self::IRepeatButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RepeatButtonAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IRepeatButtonAutomationPeerFactory<R, F: FnOnce(&IRepeatButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RepeatButtonAutomationPeer, IRepeatButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RepeatButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RepeatButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RepeatButtonAutomationPeer {}
impl ::core::fmt::Debug for RepeatButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RepeatButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RepeatButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RepeatButtonAutomationPeer;{29e41ad5-a8ac-4e8a-83d8-09e37e054257})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RepeatButtonAutomationPeer {
    type Vtable = IRepeatButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRepeatButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RepeatButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RepeatButtonAutomationPeer";
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<RepeatButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: RepeatButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&RepeatButtonAutomationPeer> for super::Provider::IInvokeProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &RepeatButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IInvokeProvider> for &RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IInvokeProvider> {
        ::core::convert::TryInto::<super::Provider::IInvokeProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for AutomationPeer {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for AutomationPeer {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RepeatButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: RepeatButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RepeatButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RepeatButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RepeatButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RepeatButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for RepeatButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RichEditBoxAutomationPeer(::windows::core::IUnknown);
impl RichEditBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichEditBox>>(owner: Param0) -> ::windows::core::Result<RichEditBoxAutomationPeer> {
        Self::IRichEditBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RichEditBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichEditBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RichEditBoxAutomationPeer> {
        Self::IRichEditBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RichEditBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IRichEditBoxAutomationPeerFactory<R, F: FnOnce(&IRichEditBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RichEditBoxAutomationPeer, IRichEditBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RichEditBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RichEditBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RichEditBoxAutomationPeer {}
impl ::core::fmt::Debug for RichEditBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RichEditBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RichEditBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RichEditBoxAutomationPeer;{c69f5c04-16ee-467a-a833-c3da8458ad64})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RichEditBoxAutomationPeer {
    type Vtable = IRichEditBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRichEditBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RichEditBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RichEditBoxAutomationPeer";
}
impl ::core::convert::From<RichEditBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RichEditBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichEditBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RichEditBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichEditBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RichEditBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichEditBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RichEditBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichEditBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RichEditBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichEditBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RichEditBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichEditBoxAutomationPeer> for AutomationPeer {
    fn from(value: RichEditBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichEditBoxAutomationPeer> for AutomationPeer {
    fn from(value: &RichEditBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichEditBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: RichEditBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichEditBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RichEditBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RichEditBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RichEditBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for RichEditBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RichTextBlockAutomationPeer(::windows::core::IUnknown);
impl RichTextBlockAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichTextBlock>>(owner: Param0) -> ::windows::core::Result<RichTextBlockAutomationPeer> {
        Self::IRichTextBlockAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RichTextBlockAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichTextBlock>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RichTextBlockAutomationPeer> {
        Self::IRichTextBlockAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RichTextBlockAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IRichTextBlockAutomationPeerFactory<R, F: FnOnce(&IRichTextBlockAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RichTextBlockAutomationPeer, IRichTextBlockAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RichTextBlockAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RichTextBlockAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RichTextBlockAutomationPeer {}
impl ::core::fmt::Debug for RichTextBlockAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RichTextBlockAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RichTextBlockAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RichTextBlockAutomationPeer;{93a01a9c-9609-41fa-82f3-909c09f49a72})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RichTextBlockAutomationPeer {
    type Vtable = IRichTextBlockAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRichTextBlockAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RichTextBlockAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RichTextBlockAutomationPeer";
}
impl ::core::convert::From<RichTextBlockAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RichTextBlockAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichTextBlockAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RichTextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichTextBlockAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RichTextBlockAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichTextBlockAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RichTextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichTextBlockAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RichTextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RichTextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichTextBlockAutomationPeer> for AutomationPeer {
    fn from(value: RichTextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockAutomationPeer> for AutomationPeer {
    fn from(value: &RichTextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichTextBlockAutomationPeer> for super::super::DependencyObject {
    fn from(value: RichTextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RichTextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RichTextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RichTextBlockAutomationPeer {}
unsafe impl ::core::marker::Sync for RichTextBlockAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct RichTextBlockOverflowAutomationPeer(::windows::core::IUnknown);
impl RichTextBlockOverflowAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichTextBlockOverflow>>(owner: Param0) -> ::windows::core::Result<RichTextBlockOverflowAutomationPeer> {
        Self::IRichTextBlockOverflowAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<RichTextBlockOverflowAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::RichTextBlockOverflow>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<RichTextBlockOverflowAutomationPeer> {
        Self::IRichTextBlockOverflowAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<RichTextBlockOverflowAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IRichTextBlockOverflowAutomationPeerFactory<R, F: FnOnce(&IRichTextBlockOverflowAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<RichTextBlockOverflowAutomationPeer, IRichTextBlockOverflowAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for RichTextBlockOverflowAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for RichTextBlockOverflowAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for RichTextBlockOverflowAutomationPeer {}
impl ::core::fmt::Debug for RichTextBlockOverflowAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("RichTextBlockOverflowAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for RichTextBlockOverflowAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.RichTextBlockOverflowAutomationPeer;{8c9a409a-2736-437b-ab36-a16a202f105d})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for RichTextBlockOverflowAutomationPeer {
    type Vtable = IRichTextBlockOverflowAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IRichTextBlockOverflowAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for RichTextBlockOverflowAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.RichTextBlockOverflowAutomationPeer";
}
impl ::core::convert::From<RichTextBlockOverflowAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: RichTextBlockOverflowAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichTextBlockOverflowAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &RichTextBlockOverflowAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichTextBlockOverflowAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: RichTextBlockOverflowAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&RichTextBlockOverflowAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &RichTextBlockOverflowAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<RichTextBlockOverflowAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: RichTextBlockOverflowAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockOverflowAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &RichTextBlockOverflowAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichTextBlockOverflowAutomationPeer> for AutomationPeer {
    fn from(value: RichTextBlockOverflowAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockOverflowAutomationPeer> for AutomationPeer {
    fn from(value: &RichTextBlockOverflowAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<RichTextBlockOverflowAutomationPeer> for super::super::DependencyObject {
    fn from(value: RichTextBlockOverflowAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&RichTextBlockOverflowAutomationPeer> for super::super::DependencyObject {
    fn from(value: &RichTextBlockOverflowAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &RichTextBlockOverflowAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for RichTextBlockOverflowAutomationPeer {}
unsafe impl ::core::marker::Sync for RichTextBlockOverflowAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ScrollBarAutomationPeer(::windows::core::IUnknown);
impl ScrollBarAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ScrollBar>>(owner: Param0) -> ::windows::core::Result<ScrollBarAutomationPeer> {
        Self::IScrollBarAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ScrollBarAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ScrollBar>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ScrollBarAutomationPeer> {
        Self::IScrollBarAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ScrollBarAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IScrollBarAutomationPeerFactory<R, F: FnOnce(&IScrollBarAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ScrollBarAutomationPeer, IScrollBarAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ScrollBarAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ScrollBarAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ScrollBarAutomationPeer {}
impl ::core::fmt::Debug for ScrollBarAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScrollBarAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ScrollBarAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ScrollBarAutomationPeer;{69e0c369-bbe7-41f2-87ca-aad813fe550e})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ScrollBarAutomationPeer {
    type Vtable = IScrollBarAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IScrollBarAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ScrollBarAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ScrollBarAutomationPeer";
}
impl ::core::convert::From<ScrollBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ScrollBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ScrollBarAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ScrollBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ScrollBarAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ScrollBarAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for &ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::core::convert::TryInto::<super::Provider::IRangeValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ScrollBarAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for &ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<RangeBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ScrollBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ScrollBarAutomationPeer> for AutomationPeer {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for AutomationPeer {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ScrollBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: ScrollBarAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollBarAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ScrollBarAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ScrollBarAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ScrollBarAutomationPeer {}
unsafe impl ::core::marker::Sync for ScrollBarAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ScrollViewerAutomationPeer(::windows::core::IUnknown);
impl ScrollViewerAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn HorizontalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).HorizontalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticallyScrollable(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticallyScrollable)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalScrollPercent(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalScrollPercent)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn VerticalViewSize(&self) -> ::windows::core::Result<f64> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe {
            let mut result__: f64 = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).VerticalViewSize)(::core::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Scroll(&self, horizontalamount: super::ScrollAmount, verticalamount: super::ScrollAmount) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Scroll)(::core::mem::transmute_copy(this), horizontalamount, verticalamount).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SetScrollPercent(&self, horizontalpercent: f64, verticalpercent: f64) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IScrollProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).SetScrollPercent)(::core::mem::transmute_copy(this), horizontalpercent, verticalpercent).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ScrollViewer>>(owner: Param0) -> ::windows::core::Result<ScrollViewerAutomationPeer> {
        Self::IScrollViewerAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ScrollViewerAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ScrollViewer>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ScrollViewerAutomationPeer> {
        Self::IScrollViewerAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ScrollViewerAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IScrollViewerAutomationPeerFactory<R, F: FnOnce(&IScrollViewerAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ScrollViewerAutomationPeer, IScrollViewerAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ScrollViewerAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ScrollViewerAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ScrollViewerAutomationPeer {}
impl ::core::fmt::Debug for ScrollViewerAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ScrollViewerAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ScrollViewerAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ScrollViewerAutomationPeer;{d985f259-1b09-4e88-88fd-421750dc6b45})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ScrollViewerAutomationPeer {
    type Vtable = IScrollViewerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IScrollViewerAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ScrollViewerAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ScrollViewerAutomationPeer";
}
impl ::core::convert::From<ScrollViewerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ScrollViewerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ScrollViewerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ScrollViewerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ScrollViewerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ScrollViewerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ScrollViewerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ScrollViewerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ScrollViewerAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ScrollViewerAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ScrollViewerAutomationPeer> for super::Provider::IScrollProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ScrollViewerAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IScrollProvider> for &ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IScrollProvider> {
        ::core::convert::TryInto::<super::Provider::IScrollProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ScrollViewerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ScrollViewerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollViewerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ScrollViewerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ScrollViewerAutomationPeer> for AutomationPeer {
    fn from(value: ScrollViewerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollViewerAutomationPeer> for AutomationPeer {
    fn from(value: &ScrollViewerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ScrollViewerAutomationPeer> for super::super::DependencyObject {
    fn from(value: ScrollViewerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ScrollViewerAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ScrollViewerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ScrollViewerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ScrollViewerAutomationPeer {}
unsafe impl ::core::marker::Sync for ScrollViewerAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SearchBoxAutomationPeer(::windows::core::IUnknown);
impl SearchBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SearchBox>>(owner: Param0) -> ::windows::core::Result<SearchBoxAutomationPeer> {
        Self::ISearchBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SearchBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SearchBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<SearchBoxAutomationPeer> {
        Self::ISearchBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SearchBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ISearchBoxAutomationPeerFactory<R, F: FnOnce(&ISearchBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SearchBoxAutomationPeer, ISearchBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SearchBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SearchBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SearchBoxAutomationPeer {}
impl ::core::fmt::Debug for SearchBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SearchBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SearchBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SearchBoxAutomationPeer;{854011a4-18a6-4f30-939b-8871afa3f5e9})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SearchBoxAutomationPeer {
    type Vtable = ISearchBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISearchBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SearchBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SearchBoxAutomationPeer";
}
impl ::core::convert::From<SearchBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SearchBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SearchBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SearchBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SearchBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SearchBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SearchBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SearchBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SearchBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: SearchBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SearchBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &SearchBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SearchBoxAutomationPeer> for AutomationPeer {
    fn from(value: SearchBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SearchBoxAutomationPeer> for AutomationPeer {
    fn from(value: &SearchBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SearchBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: SearchBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SearchBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SearchBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SearchBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SearchBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for SearchBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SelectorAutomationPeer(::windows::core::IUnknown);
impl SelectorAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn CanSelectMultiple(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CanSelectMultiple)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelectionRequired(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelectionRequired)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn GetSelection(&self) -> ::windows::core::Result<::windows::core::Array<super::Provider::IRawElementProviderSimple>> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::Array<super::Provider::IRawElementProviderSimple> = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).GetSelection)(::core::mem::transmute_copy(this), ::windows::core::Array::<super::Provider::IRawElementProviderSimple>::set_abi_len(&mut result__), &mut result__ as *mut _ as _).and_then(|| result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::Selector>>(owner: Param0) -> ::windows::core::Result<SelectorAutomationPeer> {
        Self::ISelectorAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SelectorAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::Selector>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<SelectorAutomationPeer> {
        Self::ISelectorAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SelectorAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ISelectorAutomationPeerFactory<R, F: FnOnce(&ISelectorAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SelectorAutomationPeer, ISelectorAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SelectorAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SelectorAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SelectorAutomationPeer {}
impl ::core::fmt::Debug for SelectorAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SelectorAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SelectorAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SelectorAutomationPeer;{162ac829-7115-43ec-b383-a7b71644069d})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SelectorAutomationPeer {
    type Vtable = ISelectorAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISelectorAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SelectorAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SelectorAutomationPeer";
}
impl ::core::convert::From<SelectorAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SelectorAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SelectorAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SelectorAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SelectorAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SelectorAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SelectorAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SelectorAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SelectorAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<SelectorAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SelectorAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SelectorAutomationPeer> for AutomationPeer {
    fn from(value: SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for AutomationPeer {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SelectorAutomationPeer> for super::super::DependencyObject {
    fn from(value: SelectorAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SelectorAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SelectorAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SelectorAutomationPeer {}
unsafe impl ::core::marker::Sync for SelectorAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SelectorItemAutomationPeer(::windows::core::IUnknown);
impl SelectorItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn IsSelected(&self) -> ::windows::core::Result<bool> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: bool = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).IsSelected)(::core::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn SelectionContainer(&self) -> ::windows::core::Result<super::Provider::IRawElementProviderSimple> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).SelectionContainer)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::Provider::IRawElementProviderSimple>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn AddToSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).AddToSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn RemoveFromSelection(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).RemoveFromSelection)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Select(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::ISelectionItemProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Select)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, SelectorAutomationPeer>>(item: Param0, parent: Param1) -> ::windows::core::Result<SelectorItemAutomationPeer> {
        Self::ISelectorItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SelectorItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
    pub fn CreateInstanceWithParentAndItem_compose<'a, Param0: ::windows::core::IntoParam<'a, ::windows::core::IInspectable>, Param1: ::windows::core::IntoParam<'a, SelectorAutomationPeer>, T: ::windows::core::Compose>(item: Param0, parent: Param1, compose: T) -> ::windows::core::Result<SelectorItemAutomationPeer> {
        Self::ISelectorItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithParentAndItem)(::core::mem::transmute_copy(this), item.into_param().abi(), parent.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SelectorItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ISelectorItemAutomationPeerFactory<R, F: FnOnce(&ISelectorItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SelectorItemAutomationPeer, ISelectorItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SelectorItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SelectorItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SelectorItemAutomationPeer {}
impl ::core::fmt::Debug for SelectorItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SelectorItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SelectorItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SelectorItemAutomationPeer;{ae8b3477-860a-45bb-bf7c-e1b27419d1dd})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SelectorItemAutomationPeer {
    type Vtable = ISelectorItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISelectorItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SelectorItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SelectorItemAutomationPeer";
}
impl ::core::convert::From<SelectorItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SelectorItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SelectorItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SelectorItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SelectorItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SelectorItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SelectorItemAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SelectorItemAutomationPeer> for super::Provider::ISelectionItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionItemProvider> for &SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionItemProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SelectorItemAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SelectorItemAutomationPeer> for super::Provider::IVirtualizedItemProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SelectorItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IVirtualizedItemProvider> for &SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IVirtualizedItemProvider> {
        ::core::convert::TryInto::<super::Provider::IVirtualizedItemProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<SelectorItemAutomationPeer> for ItemAutomationPeer {
    fn from(value: SelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorItemAutomationPeer> for ItemAutomationPeer {
    fn from(value: &SelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemAutomationPeer> for &SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SelectorItemAutomationPeer> for AutomationPeer {
    fn from(value: SelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorItemAutomationPeer> for AutomationPeer {
    fn from(value: &SelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SelectorItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: SelectorItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SelectorItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SelectorItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SelectorItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SelectorItemAutomationPeer {}
unsafe impl ::core::marker::Sync for SelectorItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SemanticZoomAutomationPeer(::windows::core::IUnknown);
impl SemanticZoomAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SemanticZoom>>(owner: Param0) -> ::windows::core::Result<SemanticZoomAutomationPeer> {
        Self::ISemanticZoomAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SemanticZoomAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SemanticZoom>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<SemanticZoomAutomationPeer> {
        Self::ISemanticZoomAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SemanticZoomAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ToggleState(&self) -> ::windows::core::Result<super::ToggleState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe {
            let mut result__: super::ToggleState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ToggleState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ToggleState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Toggle(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Toggle)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn ISemanticZoomAutomationPeerFactory<R, F: FnOnce(&ISemanticZoomAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SemanticZoomAutomationPeer, ISemanticZoomAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SemanticZoomAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SemanticZoomAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SemanticZoomAutomationPeer {}
impl ::core::fmt::Debug for SemanticZoomAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SemanticZoomAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SemanticZoomAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SemanticZoomAutomationPeer;{3c2fac6c-a977-47fc-b44e-2754c0b2bea9})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SemanticZoomAutomationPeer {
    type Vtable = ISemanticZoomAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISemanticZoomAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SemanticZoomAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SemanticZoomAutomationPeer";
}
impl ::core::convert::From<SemanticZoomAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SemanticZoomAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SemanticZoomAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SemanticZoomAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SemanticZoomAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SemanticZoomAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SemanticZoomAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SemanticZoomAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SemanticZoomAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SemanticZoomAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SemanticZoomAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SemanticZoomAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<SemanticZoomAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: SemanticZoomAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SemanticZoomAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &SemanticZoomAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SemanticZoomAutomationPeer> for AutomationPeer {
    fn from(value: SemanticZoomAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SemanticZoomAutomationPeer> for AutomationPeer {
    fn from(value: &SemanticZoomAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SemanticZoomAutomationPeer> for super::super::DependencyObject {
    fn from(value: SemanticZoomAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SemanticZoomAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SemanticZoomAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SemanticZoomAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SemanticZoomAutomationPeer {}
unsafe impl ::core::marker::Sync for SemanticZoomAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SettingsFlyoutAutomationPeer(::windows::core::IUnknown);
impl SettingsFlyoutAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SettingsFlyout>>(owner: Param0) -> ::windows::core::Result<SettingsFlyoutAutomationPeer> {
        Self::ISettingsFlyoutAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SettingsFlyoutAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::SettingsFlyout>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<SettingsFlyoutAutomationPeer> {
        Self::ISettingsFlyoutAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SettingsFlyoutAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ISettingsFlyoutAutomationPeerFactory<R, F: FnOnce(&ISettingsFlyoutAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SettingsFlyoutAutomationPeer, ISettingsFlyoutAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SettingsFlyoutAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SettingsFlyoutAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SettingsFlyoutAutomationPeer {}
impl ::core::fmt::Debug for SettingsFlyoutAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SettingsFlyoutAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SettingsFlyoutAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SettingsFlyoutAutomationPeer;{d0de0cdb-30cf-47a6-a5eb-9c77f0b0d6dd})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SettingsFlyoutAutomationPeer {
    type Vtable = ISettingsFlyoutAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISettingsFlyoutAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SettingsFlyoutAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SettingsFlyoutAutomationPeer";
}
impl ::core::convert::From<SettingsFlyoutAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SettingsFlyoutAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SettingsFlyoutAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SettingsFlyoutAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SettingsFlyoutAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SettingsFlyoutAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SettingsFlyoutAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SettingsFlyoutAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SettingsFlyoutAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: SettingsFlyoutAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SettingsFlyoutAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &SettingsFlyoutAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SettingsFlyoutAutomationPeer> for AutomationPeer {
    fn from(value: SettingsFlyoutAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SettingsFlyoutAutomationPeer> for AutomationPeer {
    fn from(value: &SettingsFlyoutAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SettingsFlyoutAutomationPeer> for super::super::DependencyObject {
    fn from(value: SettingsFlyoutAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SettingsFlyoutAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SettingsFlyoutAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SettingsFlyoutAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SettingsFlyoutAutomationPeer {}
unsafe impl ::core::marker::Sync for SettingsFlyoutAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct SliderAutomationPeer(::windows::core::IUnknown);
impl SliderAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Slider>>(owner: Param0) -> ::windows::core::Result<SliderAutomationPeer> {
        Self::ISliderAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<SliderAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Slider>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<SliderAutomationPeer> {
        Self::ISliderAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<SliderAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ISliderAutomationPeerFactory<R, F: FnOnce(&ISliderAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<SliderAutomationPeer, ISliderAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for SliderAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for SliderAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for SliderAutomationPeer {}
impl ::core::fmt::Debug for SliderAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SliderAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for SliderAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.SliderAutomationPeer;{ec30015a-d611-46d0-ae4f-6ecf27dfbaa5})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for SliderAutomationPeer {
    type Vtable = ISliderAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ISliderAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for SliderAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.SliderAutomationPeer";
}
impl ::core::convert::From<SliderAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: SliderAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<SliderAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: SliderAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<SliderAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: SliderAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&SliderAutomationPeer> for super::Provider::IRangeValueProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &SliderAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IRangeValueProvider> for &SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IRangeValueProvider> {
        ::core::convert::TryInto::<super::Provider::IRangeValueProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<SliderAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: SliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for RangeBaseAutomationPeer {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, RangeBaseAutomationPeer> for &SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, RangeBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<RangeBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SliderAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: SliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SliderAutomationPeer> for AutomationPeer {
    fn from(value: SliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for AutomationPeer {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<SliderAutomationPeer> for super::super::DependencyObject {
    fn from(value: SliderAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&SliderAutomationPeer> for super::super::DependencyObject {
    fn from(value: &SliderAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &SliderAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for SliderAutomationPeer {}
unsafe impl ::core::marker::Sync for SliderAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TextBlockAutomationPeer(::windows::core::IUnknown);
impl TextBlockAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TextBlock>>(owner: Param0) -> ::windows::core::Result<TextBlockAutomationPeer> {
        Self::ITextBlockAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<TextBlockAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TextBlock>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<TextBlockAutomationPeer> {
        Self::ITextBlockAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<TextBlockAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ITextBlockAutomationPeerFactory<R, F: FnOnce(&ITextBlockAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<TextBlockAutomationPeer, ITextBlockAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for TextBlockAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TextBlockAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TextBlockAutomationPeer {}
impl ::core::fmt::Debug for TextBlockAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TextBlockAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TextBlockAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TextBlockAutomationPeer;{be2057f5-6715-4e69-a050-92bd0ce232a9})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TextBlockAutomationPeer {
    type Vtable = ITextBlockAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITextBlockAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TextBlockAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TextBlockAutomationPeer";
}
impl ::core::convert::From<TextBlockAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TextBlockAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TextBlockAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TextBlockAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TextBlockAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TextBlockAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TextBlockAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBlockAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TextBlockAutomationPeer> for AutomationPeer {
    fn from(value: TextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBlockAutomationPeer> for AutomationPeer {
    fn from(value: &TextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TextBlockAutomationPeer> for super::super::DependencyObject {
    fn from(value: TextBlockAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBlockAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TextBlockAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TextBlockAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TextBlockAutomationPeer {}
unsafe impl ::core::marker::Sync for TextBlockAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TextBoxAutomationPeer(::windows::core::IUnknown);
impl TextBoxAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TextBox>>(owner: Param0) -> ::windows::core::Result<TextBoxAutomationPeer> {
        Self::ITextBoxAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<TextBoxAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TextBox>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<TextBoxAutomationPeer> {
        Self::ITextBoxAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<TextBoxAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ITextBoxAutomationPeerFactory<R, F: FnOnce(&ITextBoxAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<TextBoxAutomationPeer, ITextBoxAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for TextBoxAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TextBoxAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TextBoxAutomationPeer {}
impl ::core::fmt::Debug for TextBoxAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TextBoxAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TextBoxAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TextBoxAutomationPeer;{3a4f1ca0-5e5d-4d26-9067-e740bf657a9f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TextBoxAutomationPeer {
    type Vtable = ITextBoxAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITextBoxAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TextBoxAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TextBoxAutomationPeer";
}
impl ::core::convert::From<TextBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TextBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TextBoxAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TextBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TextBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TextBoxAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TextBoxAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TextBoxAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TextBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TextBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBoxAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TextBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TextBoxAutomationPeer> for AutomationPeer {
    fn from(value: TextBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBoxAutomationPeer> for AutomationPeer {
    fn from(value: &TextBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TextBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: TextBoxAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TextBoxAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TextBoxAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TextBoxAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TextBoxAutomationPeer {}
unsafe impl ::core::marker::Sync for TextBoxAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ThumbAutomationPeer(::windows::core::IUnknown);
impl ThumbAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::Thumb>>(owner: Param0) -> ::windows::core::Result<ThumbAutomationPeer> {
        Self::IThumbAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ThumbAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::Thumb>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ThumbAutomationPeer> {
        Self::IThumbAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ThumbAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IThumbAutomationPeerFactory<R, F: FnOnce(&IThumbAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ThumbAutomationPeer, IThumbAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ThumbAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ThumbAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ThumbAutomationPeer {}
impl ::core::fmt::Debug for ThumbAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ThumbAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ThumbAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ThumbAutomationPeer;{dc2949b5-b45e-4d6d-892f-d9422c950efb})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ThumbAutomationPeer {
    type Vtable = IThumbAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IThumbAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ThumbAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ThumbAutomationPeer";
}
impl ::core::convert::From<ThumbAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ThumbAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ThumbAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ThumbAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ThumbAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ThumbAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ThumbAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ThumbAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ThumbAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ThumbAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ThumbAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ThumbAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ThumbAutomationPeer> for AutomationPeer {
    fn from(value: ThumbAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ThumbAutomationPeer> for AutomationPeer {
    fn from(value: &ThumbAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ThumbAutomationPeer> for super::super::DependencyObject {
    fn from(value: ThumbAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ThumbAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ThumbAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ThumbAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ThumbAutomationPeer {}
unsafe impl ::core::marker::Sync for ThumbAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TimePickerAutomationPeer(::windows::core::IUnknown);
impl TimePickerAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TimePicker>>(owner: Param0) -> ::windows::core::Result<TimePickerAutomationPeer> {
        Self::ITimePickerAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<TimePickerAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TimePicker>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<TimePickerAutomationPeer> {
        Self::ITimePickerAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<TimePickerAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ITimePickerAutomationPeerFactory<R, F: FnOnce(&ITimePickerAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<TimePickerAutomationPeer, ITimePickerAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for TimePickerAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TimePickerAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TimePickerAutomationPeer {}
impl ::core::fmt::Debug for TimePickerAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TimePickerAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TimePickerAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TimePickerAutomationPeer;{a43d44ef-3285-4df7-b4a4-e4cdf36a3a17})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TimePickerAutomationPeer {
    type Vtable = ITimePickerAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITimePickerAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TimePickerAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TimePickerAutomationPeer";
}
impl ::core::convert::From<TimePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TimePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TimePickerAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TimePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TimePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TimePickerAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TimePickerAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TimePickerAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TimePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TimePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TimePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TimePickerAutomationPeer> for AutomationPeer {
    fn from(value: TimePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerAutomationPeer> for AutomationPeer {
    fn from(value: &TimePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TimePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: TimePickerAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TimePickerAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TimePickerAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TimePickerAutomationPeer {}
unsafe impl ::core::marker::Sync for TimePickerAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TimePickerFlyoutPresenterAutomationPeer(::windows::core::IUnknown);
impl TimePickerFlyoutPresenterAutomationPeer {}
impl ::core::clone::Clone for TimePickerFlyoutPresenterAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TimePickerFlyoutPresenterAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TimePickerFlyoutPresenterAutomationPeer {}
impl ::core::fmt::Debug for TimePickerFlyoutPresenterAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TimePickerFlyoutPresenterAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TimePickerFlyoutPresenterAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TimePickerFlyoutPresenterAutomationPeer;{da93ee27-82f1-4701-8706-be297bf06043})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TimePickerFlyoutPresenterAutomationPeer {
    type Vtable = ITimePickerFlyoutPresenterAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITimePickerFlyoutPresenterAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TimePickerFlyoutPresenterAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TimePickerFlyoutPresenterAutomationPeer";
}
impl ::core::convert::From<TimePickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TimePickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TimePickerFlyoutPresenterAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TimePickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TimePickerFlyoutPresenterAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TimePickerFlyoutPresenterAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TimePickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerFlyoutPresenterAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TimePickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerFlyoutPresenterAutomationPeer> for AutomationPeer {
    fn from(value: &TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TimePickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TimePickerFlyoutPresenterAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TimePickerFlyoutPresenterAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TimePickerFlyoutPresenterAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TimePickerFlyoutPresenterAutomationPeer {}
unsafe impl ::core::marker::Sync for TimePickerFlyoutPresenterAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ToggleButtonAutomationPeer(::windows::core::IUnknown);
impl ToggleButtonAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ToggleButton>>(owner: Param0) -> ::windows::core::Result<ToggleButtonAutomationPeer> {
        Self::IToggleButtonAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ToggleButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls_Primitives'*"]
    #[cfg(feature = "UI_Xaml_Controls_Primitives")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::Primitives::ToggleButton>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ToggleButtonAutomationPeer> {
        Self::IToggleButtonAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ToggleButtonAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ToggleState(&self) -> ::windows::core::Result<super::ToggleState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe {
            let mut result__: super::ToggleState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ToggleState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ToggleState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Toggle(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Toggle)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IToggleButtonAutomationPeerFactory<R, F: FnOnce(&IToggleButtonAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ToggleButtonAutomationPeer, IToggleButtonAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ToggleButtonAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ToggleButtonAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ToggleButtonAutomationPeer {}
impl ::core::fmt::Debug for ToggleButtonAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ToggleButtonAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ToggleButtonAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ToggleButtonAutomationPeer;{62dbe6c5-bc0a-45bb-bf77-ea0f1502891f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ToggleButtonAutomationPeer {
    type Vtable = IToggleButtonAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IToggleButtonAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ToggleButtonAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ToggleButtonAutomationPeer";
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ToggleButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ToggleButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ToggleButtonAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ToggleButtonAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for ButtonBaseAutomationPeer {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ButtonBaseAutomationPeer> for &ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ButtonBaseAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ButtonBaseAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for AutomationPeer {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for AutomationPeer {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: ToggleButtonAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleButtonAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ToggleButtonAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ToggleButtonAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ToggleButtonAutomationPeer {}
unsafe impl ::core::marker::Sync for ToggleButtonAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ToggleMenuFlyoutItemAutomationPeer(::windows::core::IUnknown);
impl ToggleMenuFlyoutItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ToggleMenuFlyoutItem>>(owner: Param0) -> ::windows::core::Result<ToggleMenuFlyoutItemAutomationPeer> {
        Self::IToggleMenuFlyoutItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ToggleMenuFlyoutItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ToggleMenuFlyoutItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ToggleMenuFlyoutItemAutomationPeer> {
        Self::IToggleMenuFlyoutItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ToggleMenuFlyoutItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ToggleState(&self) -> ::windows::core::Result<super::ToggleState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe {
            let mut result__: super::ToggleState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ToggleState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ToggleState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Toggle(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Toggle)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc(hidden)]
    pub fn IToggleMenuFlyoutItemAutomationPeerFactory<R, F: FnOnce(&IToggleMenuFlyoutItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ToggleMenuFlyoutItemAutomationPeer, IToggleMenuFlyoutItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ToggleMenuFlyoutItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ToggleMenuFlyoutItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ToggleMenuFlyoutItemAutomationPeer {}
impl ::core::fmt::Debug for ToggleMenuFlyoutItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ToggleMenuFlyoutItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ToggleMenuFlyoutItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ToggleMenuFlyoutItemAutomationPeer;{6b57eafe-6af1-4903-8373-3437bf352345})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ToggleMenuFlyoutItemAutomationPeer {
    type Vtable = IToggleMenuFlyoutItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IToggleMenuFlyoutItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ToggleMenuFlyoutItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ToggleMenuFlyoutItemAutomationPeer";
}
impl ::core::convert::From<ToggleMenuFlyoutItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ToggleMenuFlyoutItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleMenuFlyoutItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ToggleMenuFlyoutItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ToggleMenuFlyoutItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleMenuFlyoutItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ToggleMenuFlyoutItemAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ToggleMenuFlyoutItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ToggleMenuFlyoutItemAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ToggleMenuFlyoutItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ToggleMenuFlyoutItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleMenuFlyoutItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleMenuFlyoutItemAutomationPeer> for AutomationPeer {
    fn from(value: ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleMenuFlyoutItemAutomationPeer> for AutomationPeer {
    fn from(value: &ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleMenuFlyoutItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleMenuFlyoutItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ToggleMenuFlyoutItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ToggleMenuFlyoutItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ToggleMenuFlyoutItemAutomationPeer {}
unsafe impl ::core::marker::Sync for ToggleMenuFlyoutItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct ToggleSwitchAutomationPeer(::windows::core::IUnknown);
impl ToggleSwitchAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ToggleState(&self) -> ::windows::core::Result<super::ToggleState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe {
            let mut result__: super::ToggleState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ToggleState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ToggleState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Toggle(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IToggleProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Toggle)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ToggleSwitch>>(owner: Param0) -> ::windows::core::Result<ToggleSwitchAutomationPeer> {
        Self::IToggleSwitchAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<ToggleSwitchAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::ToggleSwitch>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<ToggleSwitchAutomationPeer> {
        Self::IToggleSwitchAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<ToggleSwitchAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn IToggleSwitchAutomationPeerFactory<R, F: FnOnce(&IToggleSwitchAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<ToggleSwitchAutomationPeer, IToggleSwitchAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for ToggleSwitchAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for ToggleSwitchAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for ToggleSwitchAutomationPeer {}
impl ::core::fmt::Debug for ToggleSwitchAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("ToggleSwitchAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for ToggleSwitchAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.ToggleSwitchAutomationPeer;{c011f174-e89e-4790-bf9a-78ebb5f59e9f})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for ToggleSwitchAutomationPeer {
    type Vtable = IToggleSwitchAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <IToggleSwitchAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for ToggleSwitchAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.ToggleSwitchAutomationPeer";
}
impl ::core::convert::From<ToggleSwitchAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: ToggleSwitchAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleSwitchAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &ToggleSwitchAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<ToggleSwitchAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: ToggleSwitchAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&ToggleSwitchAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &ToggleSwitchAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<ToggleSwitchAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: ToggleSwitchAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&ToggleSwitchAutomationPeer> for super::Provider::IToggleProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &ToggleSwitchAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IToggleProvider> for &ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IToggleProvider> {
        ::core::convert::TryInto::<super::Provider::IToggleProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<ToggleSwitchAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: ToggleSwitchAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleSwitchAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &ToggleSwitchAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleSwitchAutomationPeer> for AutomationPeer {
    fn from(value: ToggleSwitchAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleSwitchAutomationPeer> for AutomationPeer {
    fn from(value: &ToggleSwitchAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<ToggleSwitchAutomationPeer> for super::super::DependencyObject {
    fn from(value: ToggleSwitchAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&ToggleSwitchAutomationPeer> for super::super::DependencyObject {
    fn from(value: &ToggleSwitchAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &ToggleSwitchAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for ToggleSwitchAutomationPeer {}
unsafe impl ::core::marker::Sync for ToggleSwitchAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TreeViewItemAutomationPeer(::windows::core::IUnknown);
impl TreeViewItemAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn ExpandCollapseState(&self) -> ::windows::core::Result<super::ExpandCollapseState> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe {
            let mut result__: super::ExpandCollapseState = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).ExpandCollapseState)(::core::mem::transmute_copy(this), &mut result__).from_abi::<super::ExpandCollapseState>(result__)
        }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Collapse(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Collapse)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Automation_Provider'*"]
    #[cfg(feature = "UI_Xaml_Automation_Provider")]
    pub fn Expand(&self) -> ::windows::core::Result<()> {
        let this = &::windows::core::Interface::cast::<super::Provider::IExpandCollapseProvider>(self)?;
        unsafe { (::windows::core::Interface::vtable(this).Expand)(::core::mem::transmute_copy(this)).ok() }
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TreeViewItem>>(owner: Param0) -> ::windows::core::Result<TreeViewItemAutomationPeer> {
        Self::ITreeViewItemAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<TreeViewItemAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TreeViewItem>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<TreeViewItemAutomationPeer> {
        Self::ITreeViewItemAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<TreeViewItemAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ITreeViewItemAutomationPeerFactory<R, F: FnOnce(&ITreeViewItemAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<TreeViewItemAutomationPeer, ITreeViewItemAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for TreeViewItemAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TreeViewItemAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TreeViewItemAutomationPeer {}
impl ::core::fmt::Debug for TreeViewItemAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TreeViewItemAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TreeViewItemAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TreeViewItemAutomationPeer;{2331d648-b617-437f-920c-71d450503e65})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TreeViewItemAutomationPeer {
    type Vtable = ITreeViewItemAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITreeViewItemAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TreeViewItemAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TreeViewItemAutomationPeer";
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<TreeViewItemAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: TreeViewItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&TreeViewItemAutomationPeer> for super::Provider::IExpandCollapseProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &TreeViewItemAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IExpandCollapseProvider> for &TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IExpandCollapseProvider> {
        ::core::convert::TryInto::<super::Provider::IExpandCollapseProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for ListViewItemAutomationPeer {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for ListViewItemAutomationPeer {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewItemAutomationPeer> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewItemAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ListViewItemAutomationPeer> for &TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ListViewItemAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ListViewItemAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for AutomationPeer {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for AutomationPeer {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: TreeViewItemAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewItemAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TreeViewItemAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TreeViewItemAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TreeViewItemAutomationPeer {}
unsafe impl ::core::marker::Sync for TreeViewItemAutomationPeer {}
#[doc = "*Required features: 'UI_Xaml_Automation_Peers'*"]
#[repr(transparent)]
pub struct TreeViewListAutomationPeer(::windows::core::IUnknown);
impl TreeViewListAutomationPeer {
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TreeViewList>>(owner: Param0) -> ::windows::core::Result<TreeViewListAutomationPeer> {
        Self::ITreeViewListAutomationPeerFactory(|this| unsafe {
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::ptr::null_mut(), &mut ::core::option::Option::<::windows::core::IInspectable>::None as *mut _ as _, &mut result__).from_abi::<TreeViewListAutomationPeer>(result__)
        })
    }
    #[doc = "*Required features: 'UI_Xaml_Automation_Peers', 'UI_Xaml_Controls'*"]
    #[cfg(feature = "UI_Xaml_Controls")]
    pub fn CreateInstanceWithOwner_compose<'a, Param0: ::windows::core::IntoParam<'a, super::super::Controls::TreeViewList>, T: ::windows::core::Compose>(owner: Param0, compose: T) -> ::windows::core::Result<TreeViewListAutomationPeer> {
        Self::ITreeViewListAutomationPeerFactory(|this| unsafe {
            let (derived__, base__) = ::windows::core::Compose::compose(compose);
            let mut result__: ::windows::core::RawPtr = ::core::mem::zeroed();
            (::windows::core::Interface::vtable(this).CreateInstanceWithOwner)(::core::mem::transmute_copy(this), owner.into_param().abi(), ::core::mem::transmute_copy(&derived__), base__ as *mut _ as _, &mut result__).from_abi::<TreeViewListAutomationPeer>(result__)
        })
    }
    #[doc(hidden)]
    pub fn ITreeViewListAutomationPeerFactory<R, F: FnOnce(&ITreeViewListAutomationPeerFactory) -> ::windows::core::Result<R>>(callback: F) -> ::windows::core::Result<R> {
        static mut SHARED: ::windows::core::FactoryCache<TreeViewListAutomationPeer, ITreeViewListAutomationPeerFactory> = ::windows::core::FactoryCache::new();
        unsafe { SHARED.call(callback) }
    }
}
impl ::core::clone::Clone for TreeViewListAutomationPeer {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
impl ::core::cmp::PartialEq for TreeViewListAutomationPeer {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for TreeViewListAutomationPeer {}
impl ::core::fmt::Debug for TreeViewListAutomationPeer {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("TreeViewListAutomationPeer").field(&self.0).finish()
    }
}
unsafe impl ::windows::core::RuntimeType for TreeViewListAutomationPeer {
    const SIGNATURE: ::windows::core::ConstBuffer = ::windows::core::ConstBuffer::from_slice(b"rc(Windows.UI.Xaml.Automation.Peers.TreeViewListAutomationPeer;{71c1b5bc-bb29-4479-a8a8-606be6b823ae})");
    type DefaultType = ::core::option::Option<Self>;
    fn from_default(from: &Self::DefaultType) -> ::windows::core::Result<Self> {
        from.as_ref().cloned().ok_or(::windows::core::Error::OK)
    }
}
unsafe impl ::windows::core::Interface for TreeViewListAutomationPeer {
    type Vtable = ITreeViewListAutomationPeer_Vtbl;
    const IID: ::windows::core::GUID = <ITreeViewListAutomationPeer as ::windows::core::Interface>::IID;
}
impl ::windows::core::RuntimeName for TreeViewListAutomationPeer {
    const NAME: &'static str = "Windows.UI.Xaml.Automation.Peers.TreeViewListAutomationPeer";
}
impl ::core::convert::From<TreeViewListAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for ::windows::core::IUnknown {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IUnknown> for &'a TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IUnknown> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        unsafe { ::core::mem::transmute(value) }
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for ::windows::core::IInspectable {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(::core::clone::Clone::clone(value))
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Owned(unsafe { ::core::mem::transmute(self) })
    }
}
impl<'a> ::windows::core::IntoParam<'a, ::windows::core::IInspectable> for &'a TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ::windows::core::IInspectable> {
        ::windows::core::Param::Borrowed(unsafe { ::core::mem::transmute(self) })
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<TreeViewListAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: TreeViewListAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&TreeViewListAutomationPeer> for super::Provider::IItemContainerProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &TreeViewListAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::IItemContainerProvider> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::IItemContainerProvider> {
        ::core::convert::TryInto::<super::Provider::IItemContainerProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<TreeViewListAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: TreeViewListAutomationPeer) -> ::windows::core::Result<Self> {
        ::core::convert::TryFrom::try_from(&value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl ::core::convert::TryFrom<&TreeViewListAutomationPeer> for super::Provider::ISelectionProvider {
    type Error = ::windows::core::Error;
    fn try_from(value: &TreeViewListAutomationPeer) -> ::windows::core::Result<Self> {
        ::windows::core::Interface::cast(value)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
#[cfg(feature = "UI_Xaml_Automation_Provider")]
impl<'a> ::windows::core::IntoParam<'a, super::Provider::ISelectionProvider> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::Provider::ISelectionProvider> {
        ::core::convert::TryInto::<super::Provider::ISelectionProvider>::try_into(self).map(::windows::core::Param::Owned).unwrap_or(::windows::core::Param::None)
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for SelectorAutomationPeer {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for SelectorAutomationPeer {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, SelectorAutomationPeer> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, SelectorAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<SelectorAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for ItemsControlAutomationPeer {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, ItemsControlAutomationPeer> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, ItemsControlAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<ItemsControlAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for FrameworkElementAutomationPeer {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, FrameworkElementAutomationPeer> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, FrameworkElementAutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<FrameworkElementAutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for AutomationPeer {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for AutomationPeer {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, AutomationPeer> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, AutomationPeer> {
        ::windows::core::Param::Owned(::core::convert::Into::<AutomationPeer>::into(self))
    }
}
impl ::core::convert::From<TreeViewListAutomationPeer> for super::super::DependencyObject {
    fn from(value: TreeViewListAutomationPeer) -> Self {
        ::core::convert::From::from(&value)
    }
}
impl ::core::convert::From<&TreeViewListAutomationPeer> for super::super::DependencyObject {
    fn from(value: &TreeViewListAutomationPeer) -> Self {
        ::windows::core::Interface::cast(value).unwrap()
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::IntoParam::into_param(&self)
    }
}
impl<'a> ::windows::core::IntoParam<'a, super::super::DependencyObject> for &TreeViewListAutomationPeer {
    fn into_param(self) -> ::windows::core::Param<'a, super::super::DependencyObject> {
        ::windows::core::Param::Owned(::core::convert::Into::<super::super::DependencyObject>::into(self))
    }
}
unsafe impl ::core::marker::Send for TreeViewListAutomationPeer {}
unsafe impl ::core::marker::Sync for TreeViewListAutomationPeer {}
#[cfg(feature = "implement")]
::core::include!("impl.rs");
